{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 用 xgboost 进行公寓感兴趣程度预测"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. 数据准备 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false,
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "import xgboost as xgb\n",
    "from xgboost import XGBClassifier\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "%matplotlib inline\n",
    "\n",
    "sns.reset_orig()\n",
    "\n",
    "train = pd.read_csv('RentListingInquries_FE_train.csv')\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2    34284\n",
       "1    11229\n",
       "0     3839\n",
       "Name: interest_level, dtype: int64"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看各类样本分布是否均衡\n",
    "train['interest_level'].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "各类样本不均衡，交叉验证是采用 StratifiedKFold，在每折采样时各类样本按比例采样。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. 模型训练与参数调优"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 分割特征变量与类别标签\n",
    "y_train = train['interest_level'].values\n",
    "X_train = train.drop(\"interest_level\", axis=1).values\n",
    "\n",
    "# 交叉验证采用StratifiedKFold\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1 调用xgboost内嵌的cv寻找最佳的参数 n_estimators"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 创建DMatrix对象\n",
    "dtrain = xgb.DMatrix(X_train, label=y_train)\n",
    "\n",
    "\n",
    "# 定义函数：调用xgboost内嵌的交叉验证（cv）调整n_estimators\n",
    "def best_n_estimators(alg, dtrain, folds=None, early_stopping_rounds=100):\n",
    "    param = alg.get_xgb_params()\n",
    "    param['num_class'] = 3\n",
    "    n_estimators = param['n_estimators']\n",
    "    cvresult = xgb.cv(param, dtrain, num_boost_round=n_estimators, folds=folds,\n",
    "             metrics='mlogloss', early_stopping_rounds=early_stopping_rounds)\n",
    "    \n",
    "    return cvresult\n",
    "\n",
    "\n",
    "# 定义函数：绘制n_estimators与logloss的图像\n",
    "def n_estimators_plot(cvresult):\n",
    "    test_means = cvresult['test-mlogloss-mean']\n",
    "    test_stds = cvresult['test-mlogloss-std'] \n",
    "    train_means = cvresult['train-mlogloss-mean']\n",
    "    train_stds = cvresult['train-mlogloss-std'] \n",
    "    \n",
    "    plt.errorbar(range(0, cvresult.shape[0]), test_means, yerr=test_stds ,label='Test')\n",
    "    plt.errorbar(range(0, cvresult.shape[0]), train_means, yerr=train_stds ,label='Train')\n",
    "    plt.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "    plt.legend(loc='upper right')\n",
    "    plt.xlabel( 'n_estimators' )\n",
    "    plt.ylabel( 'Log Loss' )\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第一次基本采用默认参数配置，此时学习率为0.1，比较大，主要观察树的数目的大致范围，便于后续其他参数调整。后期可以降低学习率，重新确定树的数目。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best n_estimators: 345\n",
      "Best cv_logloss: 0.587247666667\n"
     ]
    },
    {
     "data": {
      "image/png": "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\niIi0+f8BoTdggB0ryfUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x26e06291710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 用初始参数构造学习器\n",
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=1000,\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.5,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "    \n",
    "cv_result = best_n_estimators(xgb1, dtrain, kfold)\n",
    "n_estimators_1 = cv_result.shape[0]\n",
    "cv_logloss_1 = cv_result['test-mlogloss-mean'][n_estimators_1 - 1]\n",
    "print(\"Best n_estimators:\", n_estimators_1)\n",
    "print('Best cv_logloss:',cv_logloss_1)\n",
    "n_estimators_plot(cv_result) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "#cv_result"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.2 调整树的参数：max_depth & min_child_weight"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第一次调整：将参数的步长设为2，进行粗调。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best parameters: {'max_depth': 5, 'min_child_weight': 5}\n",
      "Best cv_logloss: 0.582227691854\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAELCAYAAADz6wBxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYVWXXwOHfw6CIKDhPqDiXiqLiPKSZqZWapaWVpr3N\nWn3N45tlZWm+ZZNNplZmmZqlZlZaZg6pOM8jqCAKOIDMB1jfH/tAqEzCORzAdV8XV5yz97P3Omos\n9nomIyIopZRSheXm6gCUUkqVbppIlFJKFYkmEqWUUkWiiUQppVSRaCJRSilVJJpIlFJKFYkmEqWU\nUkWiiUQppVSRaCJRSilVJB6uDqA4VK9eXQICAlwdhlJKlSqbN2+OEZEa+Z13RSSSgIAAQkJCXB2G\nUkqVKsaYowU5T0tbSimlikQTiVJKqSLRRKKUUqpIrog+EqXUpWw2G+Hh4SQnJ7s6FOViXl5e+Pv7\n4+npWaj2mkiUukKFh4dTqVIlAgICMMa4OhzlIiLC6dOnCQ8Pp1GjRoW6hpa2lLpCJScnU61aNU0i\nVzhjDNWqVSvSk6kmEqWuYJpEFBT934EmEqWUKoMyRIiKSyY9w/nbqWsiUUqpMijmfAon45JJSElz\n+r00kSilSrTFixfz1ltvOex6vXv3znGli5CQEB599FEAZs+ezfjx43Ns7+Pj47BYsrvhhhs4d+5c\nnufkFvu2bdtYtmxZ1utkWzqnzqfgV8ETW2Icffr0wcfHJ9fPVFQ6akspVaINHjyYwYMHO/0+wcHB\nBAcHO/0+ucmeCC7Xtm3bCAkJ4YYbbkBEOH4mEXdjqOtXgZRkeO2119i1axe7du1yYMT/0kSilOLV\nJbvZcyLOoddsWbcyEwa1yvV4WFgYAwYMoEuXLqxbt46OHTsyduxYJkyYQFRUFN988w2dOnVi9uzZ\nhISE8OGHHzJmzBgqV65MSEgIJ0+eZMqUKQwbNizXe0yePJk5c+bg5ubGwIEDs55s5s+fz8MPP8y5\nc+f44osv6NmzJ6tWrWLq1KksXbr0gmuEhoZyxx13EB8fz5AhQ/L8zOPGjaN///4MHjyYoUOHUqVK\nFWbOnMnMmTM5fPgwb7zxBnPmzOH9998nNTWVzp07M336dNzd3bPWBKxevTqvvfYac+bMoUaNGtSv\nX58OHTrw1FNP5Rh7586defnll0lKSmLNmjU8/NiTdOk3iIZVvfFwd8OjYkV69OjBoUOHCvpXd9m0\ntKWUcplDhw7x5JNPsm/fPvbt28fcuXNZs2YNU6dOZdKkSTm2iYyMZM2aNSxdupTnnnsu12v/8ssv\n/PTTT2zYsIHt27fzzDPPZB1LS0tj48aNTJs2jVdffTXPGB977DEeeughdu7cSZ06dfI8t2fPnvz9\n998AREREsGfPHgD+/vtvevXqxd69e5k3bx5r165l27ZtuLu7880331xwjU2bNrFw4UK2b9/OL7/8\nckkp6+LYy5Urx8SJE7n99tv5Z9Nmul4/GN8Knvh6l8szVkfSJxKlVJ5PDs7UqFEjAgMDAWjVqhV9\n+/bFGENgYCBhYWE5trn55ptxc3OjZcuWnDp1Ktdrr1ixgrFjx+Lt7Q1A1apVs47dcsstAHTo0CHX\n+2Rau3YtCxcuBGDUqFE8++yzuZ7bs2dPpk2bxp49e2jZsiVnz54lMjKS9evX8/777/Pll1+yefNm\nOnbsCEBSUhI1a9a85H5DhgzBy8sLLy8vBg0adMHx3GIXEY6f/bekVZw0kSilXKZ8+fJZ37u5uWW9\ndnNzIy0t59FG2duIFG5oa+Y13N3dc71PdgWdZ1GvXj3OnTvH8uXL6dWrF2fOnOH777/Hx8eHSpUq\nISLcfffdvPnmm4WKO6/Yk23pJKWm06CqN57uxVts0tKWUqpM6tevH7NmzSIxMRGAM2fOFOo63bt3\n57vvvgO4pAyVky5dujBt2jR69epFz549mTp1Kj179gSgb9++LFiwgKioqKyYjh69cMuP7t27s2TJ\nEpKTk4mPj7+kzyYn5StUJPpsrFXSqlC49bKKQhOJUqpMGjBgAIMHDyY4OJigoCCmTp1aqOu89957\nfPTRRwQGBhIREZHv+T179iQtLY2mTZvSvn17zpw5k5VIWrZsyeuvv871119PmzZt6NevH5GRkRe0\n79ixI4MHD6ZNmzYMHDiQwMBAfH19c72fiNAsqDNHDu5ncN/ufP/995ecExAQwBNPPMHs2bPx9/fP\n6rtxFFPYR8MCXdyYAcB7gDswQ0QuGQxujOkNTAM8gRgRucb+/kzgJiBKRFpnO/8V4D4g2v7WCyKS\n57i54OBg0R0SlbrQ3r17ufrqq10dhspBfHw8Pj4+JCYm0qtXLz777DPat2+f47lR55M5GZtMg6re\n+BWhgz2nfw/GmM0iku+YaKf1kRhj3IGPgH5AOLDJGLNYRPZkO8cPmA4MEJFjxpjsvU6zgQ+Br3K4\n/LsiUrhfL5RSqoS7//772bNnD8nJydx99925JpFkWzqn4lJcVtLK5MzO9k7AIRE5AmCM+Q4YAmR/\nproD+EFEjgGISFTmARFZbYwJcGJ8SqkyYOfOnYwaNeqC98qXL8+GDRtK7T3nzp2b7zkiQvjZJNwM\n1PWr4NIFOJ2ZSOoBx7O9Dgc6X3ROc8DTGLMKqAS8JyI5PYFc7BFjzGggBHhSRM5efIIx5n7gfoAG\nDRpcfvRKqVIhMDCQbdu2lfl7XiwmPoXE1DSXjNK6mKs72z2ADsCNQH/gv8aY5vm0+RhoDAQBkcD/\ncjpJRD4TkWARCa5Ro4YDQ1ZKKddKtqVzMi6Fyl6uLWllcuYTSQRQP9trf/t72YUDp0UkAUgwxqwG\n2gIHcruoiGTNQDLGfA7kPzZOKaXKiOwlrXpVXFvSyuTMJ5JNQDNjTCNjTDlgBLD4onN+AnoYYzyM\nMd5Ypa+9eV3UGJN9jYKhgHNWIVNKqRIoJj6VxNQ06vpVcHlJK5PTnkhEJM0YMx74FWv470wR2W2M\nedB+/BMR2WuMWQ7sADKwhgjvAjDGfAv0BqobY8KBCSLyBTDFGBMECBAGPOCsz6CUUiVJii2dU3HJ\nVPbyxK8ElLQyOTWdicgyEWkuIk1E5A37e5+IyCfZznlbRFqKSGsRmZbt/ZEiUkdEPEXE355EEJFR\nIhIoIm1EZLCIRF56Z6VUWaH7kVhEhF69e7N7x9ZLSloX70eS3caNGwkKCiIoKIi2bduyaNEih8eu\na20ppUo03Y/EEhOfSkaGUMOn/CUlrez7kVysdevWhISE4OHhQWRkJG3btmXQoEF4eDjux78mEqUU\n/PIcnNzp2GvWDoSBuT9J6H4kBd+PpG1QO2666wHc3QzLlyziuScfy3U/kueff57bb789K6bM1Y8B\nkpOTndI5XzJ6apRSVyTdj6Rg+5HEJtkwBsp7uJOenp7rfiTbtm27IIlk2rBhA61atSIwMJBPPvnE\noU8joE8kSinI88nBmXQ/kvz3I7mu/w2kpmVQx7cCxlxe7Jk6d+7M7t272bt3L3fffTcDBw7Ey8ur\nQG0LQhOJUspldD+SvKXY0klITaOKpztVvD0LFXt2V199NT4+Puzatcuh/UFa2lJKlUmlfT+SpKQk\n9odHs3rFr/hW8MwzmVWqVInz58/neCw0NDQr4Rw9epR9+/YREBCQ7+e4HJpIlFJlUmnfj6R1YBvG\n3D6UwMBAqlbxy/Oeffr0Yc+ePQQFBTFv3rwLjq1Zs4a2bdsSFBTE0KFDmT59OtWrV7/MP4W8OXU/\nkpJC9yNR6lK6H0nJdfpcLJEJ4JaeyuhbBua5H4mjlMj9SJRSSl0+EWHsf+7jwL69SLqNMXnsR1JS\naCJRSpVqZW0/ktMJqbz+3mf4V/GmasXC73hYnDSRKKVKtbK0H0lKWjonY5Op5OWZNUqrNNDOdqWU\nKgEyl4c3QD0X73h4uTSRKKVUCXAmIZWElDTq+HlRzqN0/WguXdEqpVQZlJqWTmRsMj7lPajiXTr6\nRbLTRKKUKtHK+jLymSWth0cNx8ek5lnSyi32vJaRDwsLo0KFCllLyT/44IMOiz2TdrYrpUq0sr6M\n/JmEVOJT0li0eAnVfMrn3yAHeS0jD9CkSROnDkjQJxKllEuEhYVx1VVXMWbMGJo3b86dd97JihUr\n6N69O82aNWPjxo3AhU8HY8aM4dFHH6Vbt240btyYBQsW5HmPyZMnExgYSNu2bS9YKXj+/Pl06tSJ\n5s2bZ63Wu2rVKm666aZLrhEaGkrXrl0JDAzkpZdeyvN+48aNY/Fia0fxoUOHcs899wAwc+ZMXnzx\nRQDmzJlDp06dCAoK4t777if8TAI+5T3o0LoFMTExALz22mu0aNGCHj16MHLkyAtm5V8ce2pqKi+/\n/DLz5s3LcWZ7cdAnEqUUkzdOZt+ZfQ695lVVr+LZTrmvlAvWMvLz589n5syZdOzYMWsZ+cWLFzNp\n0iR+/PHHS9pkLiO/b98+Bg8enOt+JNmXkff29r5gra3MZeSXLVvGq6++yooVK3KNMXMZ+dGjR/PR\nRx/l+Xkyl5EfPHgwERERWcuf/P3334wYMeKCZeQ9PDwYdc/9/Lzoe54ad1/WNbIvI2+z2Wjfvj0d\nOnTIM/aJEydm7dmSk9DQUIKCgvD19eX111/PWrLFUfSJRCnlMpnLyLu5uZXoZeRHjhwJcMkkxItl\nJpLMZeRr1aqVtYx8t27dWLlyZdYy8m3aBrFm9SrOnQqnnIf7BffLXEa+UqVKDBo06IJ7XO4y8nXq\n1OHYsWNs27aNd955hzvuuIO4uLh8210Opz6RGGMGAO8B7sAMEbmkx8wY0xuYBngCMSJyjf39mcBN\nQJSItM52flVgHhAAhAG3ichZZ34Opcq6/J4cnOVKXUb+1dde58CpeLzLudOoekWnxl6+fPmsNh06\ndKBJkyYcOHCgdCwjb4xxBz4CBgItgZHGmJYXneMHTAcGi0grYHi2w7OBATlc+jlgpYg0A1baXyul\n1AVK8jLy2w4cA8Bbkjh27Ngl91uyZAnJycnEx8dfsvVvTvJaRj46Opr09HQAjhw5wsGDB2ncuHG+\n17wczixtdQIOicgREUkFvgMu3vD4DuAHETkGICJRmQdEZDWQ09/8EOBL+/dfAjc7OnClVOlXUpeR\nf+6lCYwePpjb+/fgxoEDcl1Gvk2bNgwcOJDAwEB8fX3zvGdey8ivXr2aNm3aEBQUxLBhw/jkk08u\nKPM5gtOWkTfGDAMGiMi99tejgM4iMj7bOZklrVZAJeA9Efkq2/EAYOlFpa1zIuJn/94AZzNf50aX\nkVfqUrqMfPFLTcvg4KnzVLCXtHIrmcXHx+Pj40NiYiK9evXSZeQLcP8OQF+gArDeGPOPiBwoSGMR\nEWNMjpnQGHM/cD9AgwYNHBSuUkoVjogQcS4JAfyr5L2W1v3338+ePXtITk7m7it8GfkIoH621/72\n97ILB06LSAKQYIxZDbQF8kokp4wxdUQk0hhTB4jK6SQR+Qz4DKwnkkJ+BqVUCVdalpE/m5jK+WQb\ndf0qXDBKKydz5851SJzFxZmJZBPQzBjTCCuBjMDqE8nuJ+BDY4wHUA7oDLybz3UXA3cDb9n/+5Mj\ng1ZKlS6lYRn51LQMIs8lU7G8B9VKyR4jl8Npne0ikgaMB34F9gLfi8huY8yDxpgH7efsBZYDO4CN\nWEOEdwEYY74F1gMtjDHhxpj/2C/9FtDPGHMQuM7+WilVCFfCVtuudjklLVcp6r8D3bNdqStUaGgo\nlSpVolq1aiXyh1tZcSYhlfCzidT1q0D1Qq6l5UwiwunTpzl//jyNGjW64Fhp6WxXSrmIv78/4eHh\nREdHuzqUMis9QzgVl4ynuxseceWJLqH52svLC39//0K310Si1BXK09Pzkt9AleOICPfM3sT6I6dZ\n/lgvAi5zBntpomttKaWUEyzcEsGf+6N5pv9VZTqJgCYSpZRyuJOxyby6ZDcdA6owpluAq8NxOk0k\nSinlQCLCC4t2YkvPYMqwtri5ldCOEQfSRKKUUg60aGsEf+yL4un+V132yr6llSYSpZRykKi4ZF5Z\nvJvghldGSSuTJhKllHKAzJJWSloGU4a1wf0KKGll0kSilFIO8OO2CFbsjeLp/i1oXMPH1eEUK00k\nSilVRFZJaw/tG/gxtvuVNzdHE4lSShWBVdLaRZItnbeHt72iSlqZNJEopVQRLN5+ghV7T/HU9c1p\ncoWVtDJpIlFKqUKKOp/MhMW7adfAj//0cOw+6KWJJhKllCoEEeGlRbtITE3n7ZI4SistFVZNhtRE\np99KE4lSShXCkh2R/LbnFE/0a07TmpVcHc6FMtJh0QOwahIc/sPpt9NEopRSlyn6fAoTftpF2/p+\n3NujhI3SEoGfn4TdP0C/iXD1TU6/pSYSpZS6DCLCf3/cRUJqOv8b3gYP9xL2Y3TlRNg8C3o8Dt0f\nK5ZblrA/AaWUKtl+3hnJ8t0nefy6EljSWvserHkHOoyFvhOK7baaSJRSqoBi4lN4+afdtPX35b6e\nJayktflL+P1laHUL3Pg/KMbtk52aSIwxA4wx+40xh4wxz+VyTm9jzDZjzG5jzF/5tTXGvGKMibC3\n2WaMucGZn0EppTJN+Gk38clpvD28bckqae1eBEseg6bXwdBPwc29WG/vtK12jTHuwEdAPyAc2GSM\nWSwie7Kd4wdMBwaIyDFjTM0Ctn1XRKY6K3allLrYzzsi+XlnJE/3b0HzWiWopHVoJSy8D+p3htu+\nBo9yxR6CM1NqJ+CQiBwRkVTgO2DIRefcAfwgIscARCTqMtoqpVSxOB2fwn9/2kVgPV8e6FWCJh4e\n2wDz7oIaV8Ed86Cct0vCcGYiqQccz/Y63P5eds2BKsaYVcaYzcaY0QVs+4gxZocxZqYxpoqjA1dK\nqexeXryb88k2ppakktbJXTB3OFSqDaN+gAp+LgvF1X8iHkAH4EagP/BfY0zzfNp8DDQGgoBI4H85\nnWSMud8YE2KMCYmOjnZgyEqpK8mynZH8vCOSx/o2o0XtElLSOn0Yvh4KnhVh1I/gU9Ol4TgzkUQA\n9bO99re/l1048KuIJIhIDLAaaJtXWxE5JSLpIpIBfI5VBruEiHwmIsEiElyjRg2HfCCl1JXlTEIq\n//1xF63rVeaBa5q4OhxL3An4+mbISINRi6BKQ1dH5NREsgloZoxpZIwpB4wAFl90zk9AD2OMhzHG\nG+gM7M2rrTGmTrb2Q4FdTvwMSqkr2ITFu4lLtvH2sLZ4loSSVuIZ60kk8QzctQBqXuXqiAAnjtoS\nkTRjzHjgV8AdmCkiu40xD9qPfyIie40xy4EdQAYwQ0R2AeTU1n7pKcaYIECAMOABZ30GpdSVa/mu\nSJZsP8ET/ZpzdZ3Krg4HUs7DN8PgTKiVROp1cHVEWYyIuDoGpwsODpaQkBBXh6GUKiXOJqTS792/\nqFnJi5/Gd3f904gt2epYD1sLt38NV91YLLc1xmwWkeD8znPaE4lSSpVWryzZzblEG1/d09n1SSQ9\nDRb+B0JXw82fFFsSuRwloOinlFIlx6+7T/LTthM8cm0zWtZ1cUkrIwOWPAr7lsKAyRA00rXx5EIT\niVJK2Z1LTOXFRbtoWacyD/dx8SgtEfjtRdj2DfR+Hro86Np48qClLaWUsnt1yR7OJaby5T0dXV/S\nWj0V/pkOnR+Ea551bSz50CcSpZQCft9zikVbIxjXpymt6vq6NpiNn8Ofr0PbkdD/zWJdybcw8k0k\nxpgmxpjy9u97G2MetS+2qJRSZcK5xFReWLSTq2pXYlyfpq4NZsf3sOwpaHEDDP4Q3Er+7/sFiXAh\nkG6MaQp8hjXjfK5To1JKqWI0cckeziSkMnV4W8p5uPAH9/5fYNGDENAThs0C99LR+1CQP7EMEUnD\nmkX+gYg8DdTJp41SSpUKK/ac4oetEYzr3YTW9VxY0gpbA/PHQJ02MPJb8PRyXSyXqSCJxGaMGQnc\nDSy1v+fpvJCUUqp4xCbaskpa469t5rpATmyFuSPAryHcuRDKO2ZxyHPJ5xxynfwUJJGMBboCb4hI\nqDGmEfC1c8NSSinnm7h0D6cTUnl7mAtLWtEHYM6tUKGKtQhjxWoOuezKYyvpv7A/606sc8j18pJv\nAc6+K+GjAPa9PyqJyGRnB6aUUs70x75TLNwSzvg+TQn0d1FJ69xxayVf4wajfwTfi7dsKpx5++Yx\naeMkWlVrxVVVnb+wY76JxBizChhsP3czEGWMWSsiTzg5NqWUcorYJBvP/7CT5rV8eKSvi0ZpxUdb\nSSQlHsYshWpFnwApInyw9QM+3/k51/hfw5ReU/D2dP6uiQV5lvMVkTjgFuArEekMXOfcsJRSynle\nX7qHmHhrlFZ5D/fiDyA5FubcArERcOf3Vgd7EdkybLy09iU+3/k5tza7lWl9phVLEoGCzWz3sO8B\nchvwopPjUUopp/pzfxTzN4czrk8T2vi7YEpcaqLVsR61F0Z+Bw26FPmSCbYEnlj1BOtOrGNc0Dge\naPMAphgnMRYkkUzE2hdkrYhsMsY0Bg46NyyllHK8uGQbzy/cSbOaPjza1wWjtNJtMP9uOLYehn0B\nzYpe3IlJiuHhFQ9z4OwBJnabyNBmQx0Q6OUpSGf7fGB+ttdHgFudGZRSSjnDG0v3EnU+mU9HdS/+\nklZGhjXZ8OBvcNO70LroP0ZDY0N5aMVDnEk+wwfXfkBP/54OCPTyFWSJFH9jzCJjTJT9a6Exxr84\nglNKKUf560A080KO88A1TWhbv5hLWiLWsie7FkDfCRB8T5EvuS1qG6N+GUVSWhKz+s9yWRKBgnW2\nz8LaL72u/WuJ/T2llCoV4pJtPLdwB01r+vCYK0paf7wOIV9A98egZ9EHvK48tpJ7f7sX33K+zBk4\nh1bVWzkgyMIrSCKpISKzRCTN/jUbqOHkuJRSymEm/byXU3HJvD2sDV6exVzSWvcB/D0V2o+G614t\n8uXm7ZvHE6ueoHmV5nx9w9fUr1zfAUEWTUESyWljzF3GGHf7113AaWcHppRSjrD6QDTfbTrOfb0a\n065BleK9+Zav4beXoOXNcNO0Ii0HLyK8v+V9Xt/wOj3r9WTG9TOo6lXVgcEWXkESyT1YQ39PApHA\nMGBMQS5ujBlgjNlvjDlkjHkul3N6G2O2GWN2G2P+yq+tMaaqMeZ3Y8xB+3+L+V+GUqq0OG8vaTWp\nUZHHr2tevDff85O1TW6Ta+GWz8Gt8E9CrpwjUhD5JhIROSoig0WkhojUFJGbKcCoLWOMO/ARMBBo\nCYw0xrS86Bw/YDowWERaAcML0PY5YKWINANW2l8rpdQlJi3bx8m4ZN4e3rZ4S1qH/4CF90K9YLh9\nDniUK/SlEmwJjF85nsWHFzMuaBwTuk7Aw61kLS9f2FXKCtJb1Ak4JCJHRCQV+A4YctE5dwA/iMgx\nABGJKkDbIcCX9u+/BG4u5GdQSpVhaw7G8O3GY9zbszHti7OkdXwTfHcXVGtmzVovV7HQl4pJimHs\n8rFsiNzAxG4TebDtg8U60bCgCptICvJJ6gHHs70Ot7+XXXOgijFmlTFmszFmdAHa1hKRSPv3J4Fa\nOQZozP3GmBBjTEh0dHQBwlVKlRXxKWk8u3AHjatX5Il+xVjSOrUHvhkGPjWtlXwrFD6BhcaGctey\nuwiLC+ODaz9wyUTDgirs85E48P4dgL5ABWC9MeafAgchIsaYHGMRkc+wdnQkODjYUfEqpUqBN5ft\n5URsEgse7Fp8Ja0zofD1UPCsYK3kWynH33ELZFvUNsb/MR53486s/rNcPrw3P7kmEmPMeXJOGAbr\nh35+IrC25c3kb38vu3DgtIgkAAnGmNVAW/v7ubU9ZYypIyKR9jXAolBKKbu1h2L4ZsMx7u3RiA4N\ni2lUU1wkfDUE0lNg7C9QJaDQl1p5bCXPrn6W2hVr8/F1H1O/kuuH9+Yn19KWiFQSkco5fFUSkYI8\nyWwCmhljGhljygEjsCY2ZvcT0MMY42GM8QY6A3vzabsYa7dG7P/9qaAfVilVtsWnpPHMAquk9VT/\nFsVz08Qz1kq+CTHW7oY1ry70pTLniLSo0oKvBn5VKpIIFL60lS8RSTPGjMda8NEdmCkiu40xD9qP\nfyIie40xy4EdQAYwQ0R2AeTU1n7pt4DvjTH/AY5iDU1WSikm/7KPE7FJzH+gmEpaKfHwzXA4fQju\nnA/+HQp1GRHh/a3vM2PnDHr792bKNVOo4FGQwk/JYETKfvdBcHCwhISEuDoMpZQTrTscwx2fb+A/\nPRrx35ta5t+gqNJSYO5tELoabvsarr6pUJexpdt4Zf0rLD68mGHNh/Fi5xdLzPBeY8xmEQnO77yS\nEa1SShVBgr2kFVDNm6euL4aSVnoaLPwPHFkFQ6YXOokk2BJ4/M/HWR+5nvFB47m/zf0lcnhvfjSR\nKKVKvcnL9xFxLol593elQjknl7REYOljsHcJ9H8T2t1ZqMtEJ0YzbuU4l+4j4igF2bM9p9FbsUAI\n8KR9fxKllHKJ9YdP89X6o4ztHkCnRk4epSVirZ21dQ70ega6PlyoyxyJPcJDvz/E2ZSzLt1HxFEK\n8kQyDWs47lysob8jgCbAFmAm0NtZwSmlVF4SU9N4ZuF2Glbz5uniGKX19/9g/YfQ6X7o80KhLlHa\n5ogUREFmtg8WkU9F5LyIxNkn+vUXkXmALpiolHKZKcv3c/xMElNubYN3OSdX6jfNgD9eg8DbYMDk\nQq3km7mPiF95P+bc4Pp9RBylIIkk0RhzmzHGzf51G5BsP1b2h3wppUqkf46cZva6MMZ0C6Bz42rO\nvdnOBfDzU9B8INw8Hdwuf3Wp7/Z9VyrniBREQVL4ncB7WKv0AqwH7jLGVADGOyswpZTKTWKqtZZW\ng6rePDPAySWtA7/CogegYXcYPgvcPS+reWmfI1IQ+SYSe2f6oFwOr3FsOEoplb+3f93P0dOJfHtf\nF+eWtI6ug+9HQ61WMPJbax2ty1CS54g4Ur7PZ8YYf2PMImNMlP1roTHGvziCU0qpi20MPcPsdWGM\n7tqQrk2cWNKK3A5zbwff+nDXD+BV+bKaJ9gSGLdyHIsPL2Z80Hhe7vJymUwiULA+kllY61vVtX8t\nsb+nlFJAQXrpAAAgAElEQVTFKik1nWcWbMe/SgWeHXCV824Ucwi+vgW8fK2VfCtWv6zm0YnRjF0+\nlo0nNzKx20QeaPtAqZxoWFAFSSQ1RGSWiKTZv2YDNZwcl1JKXWLqb/sJO53I5FvbULG8k367jw23\nVvIFGPUj+F5eAeZI7JFSs4+IoxQkkZw2xtxljHG3f90FnHZ2YEoplV1I2Blmrg1lVJeGdGtyeU8I\nBZYQA1/dDClxMOoHqN70sppvi9rG6F9Gk5yezKz+s0r9RMOCKkgiuQdrhd2TQCQwDBjjxJiUUuoC\nSanpPL1gB/X8KvDcQCeVtJLjrOXgY4/DHfOgTtvLal5W54gURL6JRESOishgEakhIjVF5Gbg1mKI\nTSmlAPjfb/sJjUlgirNKWrYk+HYEnNptreTbsNtlNS/Lc0QKorB7tj/h0CiUUioXm4+e4Yu1odzZ\nuQHdmjqhpJVug/ljrKG+Qz+F5tcXuKmI8N6W93hjwxv0qteLGf1nUNWrmHZlLEEKm9rL7vADpVSJ\nkWxL5+n5O6jrW4Hnbyj8zoO5ysiAHx+GA8vhxv9B4LACN71S5ogURGE/tS6NopRyund+P8CRmATm\n/KczPo4uaYnA8mdh5/dw7X+h470FblpW9hFxlFz/ZnJZPh6sp5GyNb9fKVXibD56lhl/H2Fkpwb0\naOaEktafk2DjZ9B1PPR8ssDNytI+Io6SayIRkUrFGYhSSmVKtqXz9ILt1K7sxQs3OGGU1vqPYPUU\naDcKrn+9wCv5lrV9RBylsJ3tBWKMGWCM2W+MOWSMeS6H472NMbHGmG32r5ezHXvMGLPLGLPbGPN/\n2d5/xRgTka3NDc78DEqp4vfuigMciU7grVvbUMnr8hZJzNfWb+DXF+DqwTDovQInkSt1jkhBOK1n\nyBjjDnwE9MPaGGuTMWaxiOy56NS/ReSmi9q2Bu4DOgGpwHJjzFIROWQ/5V0Rmeqs2JVSrrP12Fk+\nX32EER3r06u5gxfR2LsUFo+Hxr3h1hngVrBteVceW8mzq5+ldsXafHzdx1fc8N78OPOJpBNwSESO\niEgq8B0wpIBtrwY2iEiiiKQBfwG3OClOpVQJYZW0dlCrshcv3OjgUVpHVsGCsVCvA9z+DXiUL1Cz\nK32OSEE4M5HUA45nex1uf+9i3YwxO4wxvxhjMqeC7gJ6GmOqGWO8gRuA7H97j9jbzDTG6C6NSpUR\n7608yKGoeN66tQ2VHVnSCg+Bb++Aak3hju+hvE++TXSOSME5tY+kALYADUSkDfAB8COAiOwFJgO/\nAcuBbUC6vc3HQGMgCGvJlv/ldGFjzP3GmBBjTEh0dLRTP4RSqui2Hz/Hp38d5vbg+lzjyJJW1F74\nZhj41IBRi8A7/2RgS7fx0tqXmLFzBsOaD+PdPu+Wuc2oHMmZiSSCC58i/O3vZbHvAR9v/34Z4GmM\nqW5//YWIdBCRXsBZ4ID9/VMiki4iGcDnWCW0S4jIZyISLCLBNWroYsVKlWQpaek8NX87tSp78eJN\nDixpnQ2Dr4eCe3lrJd9KtfNtciXtI+IozvzT2QQ0M8Y0wkogI4A7sp9gjKkNnBIRMcZ0wkpsp+3H\naopIlDGmAVb/SBf7+3VEJNJ+iaFYZTClVCn23oqDHIyKZ9bYjo4raZ0/aa3ka0uCsb9A1Ub5NtE5\nIoXjtEQiImnGmPHAr4A7MFNEdhtjHrQf/wRrJeGHjDFpQBIwQkQyJ0EuNMZUA2zAOBE5Z39/ijEm\nCGuyZBjwgLM+g1LK+bYfP8cnfx1meAd/+rSo6ZiLJp21NqaKj4LRP0Gtlvk20TkihWf+/blddgUH\nB0tISIirw1BKXSQlLZ1BH6whNsnGb49fg28FBzyNpCZYTyKR26yO9SZ98m2yLWob4/8Yj7txZ3rf\n6VfUEvB5McZsFpHg/M5zdWe7UuoK9sHKQxw4Fc+btwQ6JomkpcC8uyAiBG79okBJ5EreR8RRNJEo\npVxiZ3gsH/91mFvb+3PtVbWKfsGMdPjhPjj8Bwx6H1oOzreJzhFxDB2KoJQqdqlpGTw1fzvVKpbj\n5Zvy77/Ilwgs/T/Y8xNc/wa0H5XP6cL7W99nxs4Z9PbvzZRrpujw3iLQRJKX9DRrCYUreHlopZzh\nwz8Osv/UeWaMDsbX2wElrRUTYMtX0PMp6DY+z1Oz7yMyvPlwXuj8gg7vLSItbeUh+re3ifuoD4Rv\ndnUoSpUZuyJi+WjVYW5pV4/rWjqgpPX3O7D2PWs/kWtfyvPU7HNEHmn3CP/t8l9NIg6giSQPM8JP\nszA5nIwZ15I0716IO+HqkJQq1TJLWlUrluPlQQ4oaYXMhJWvQuBwGPh2ntWD6MRoxi4fy8aTG3mt\n+2tX/GZUjqSJJA9JLX14p0YF+tW5in2Hl2Kb1o60P6dYE5yUUpftoz8Pse/keSYNDcTPu1zRLrZr\nISx9Apr1h5s/Brfcf5wdiT3CXcvuIiwujA/7fsjNTW8u2r3VBTSR5OHVbhN4q+db2HwrMLpuTR7y\na0j832+SPK0D7F5kdfAppQpk94lYPvrzEEPb1aNfUUtaB1fAD/dDg64wfDa4597PsjVq67/7iAyY\nRY96PYp2b3UJTSR5MMZwY+MbWXbLUka3GsUm3xT61G/CZ8ad9PljSJ0xACK3uzpMpUo8W3oGT83f\ngZ93OSYUtaR1dL01V6RmS7jjOyjnneupK4+u5L7f7vt3jkg1nSPiDJpICsCnnA9Pd3yahYMX0rZ2\nIJ/XgN51WrMxej/y6TWk/zjeWopBKZWjj/48xN7IOCYNbV20klbkDph7O/jWg7t+AC/fXE/9dt+3\nPL7qcVpUacHXA7/WOSJOpInkMjSt0pRZA2YypdcU3HzL8VDdyoyo2oYzO74j7b12sGaaNbNWKZVl\nz4k4PvzjEEOC6nJ9q/xX383V6cMw5xZrL5FRP1rLwudARJi2eRqTNkzimvrXMKP/DKp46bZFzqSJ\n5DIZYxjYaCDLbl3KmNZ3s88vjn71G/F6ufqkr5hA2gedrO08tf9EKXtJazt+3p68MqgIZaXYCGv9\nLMmwkohfzk8XtnQbL655kS92fcHw5sN5t7fuI1IcNJEUUkXPijwZ/CQ/DF5IuzqBLKyZQLc6Qfya\nlAbz7iTjyyFwarerw1TKpT5edZg9kXG8fnMgVSoWsqSVcNraUyTprFXOqtE8x9PiU+N5eOXDLDmy\nROeIFDNNJEXUxK8JM/t/wdu93qaCnzvP1XPjpqqdOX5sK/JJD2t4YsJpV4epVLHbGxnHB38cZFDb\nugxoXciSVnIcfHMrnDtqdazXDcrxtOjEaMb+OpZNJzfpHBEX0ETiAMYYBjQawM+3LGFsq7Ec94ti\nUP3a/J93B1JDZpHxfjtYPx3Sba4OValiYUvP4OkF26ns5cmrgwtZ0rIlw3d3WB3sw7+EgJyH7WbO\nETkad1TniLiIJhIHquhZkSeCn2DR4B8IrtOWP2qeokuddnwt/vDr88j0rnDgN1eHqZTTffrXYXZF\nxPH6za2pWpiSVnoaLBgLYWtg6CfQYkCOp+kckZJBE4kTNPZrzBf9P2fqNVPx9TNMrXee3lV7setc\nAswdDnNuhej9rg5TKafYf/I87608yI1t6jAwsM7lXyAjA34aB/uXwQ1vQ5vbcjxN54iUHJpInMQY\nQ/+A/vx8yxLuaX0P5/zCudPfh9EV+xB3ZL31dPLLs5B4xtWhKuUwafZRWpW8PJlYmJKWCCx/DnZ8\nB31egk735XiazhEpWTSROJm3pzePd3icRUN+oFPdILbWPEzP2i35n2cXMjZ8hnzQHjZ+bj3KK1XK\nfbr6CDsjYnltSGuq+ZS//Av8NRk2fgpdxkGvpy45rHNESianJhJjzABjzH5jzCFjzHM5HO9tjIk1\nxmyzf72c7dhjxphdxpjdxpj/y/Z+VWPM78aYg/b/lop/RY18G/H59Z/xTu93qOYLX9Y7Tpeqffkr\nrS4sewo+6WHt7KZUKXXg1HneW3GQGwPrcGObQpS0/vkYVr0JQXfC9a9fspKvzhEpuZyWSIwx7sBH\nwECgJTDSGJPTIjt/i0iQ/WuivW1r4D6gE9AWuMkY09R+/nPAShFpBqy0vy4VjDH0a9iPpbcs5t7A\ne0n1O8wjdW0M9h7EyXOx1lj5b0daM3iVKkXS0jN4ev52fLw8eHVIIUpa2761SlpX3WRtk3vRSr46\nR6Rkc+YTSSfgkIgcEZFU4DtgSAHbXg1sEJFEEUkD/gJusR8bAnxp//5LoNSN9fP29Oax9o/x45BF\ndKnXntBa27muhj/PlLuR1EOrkI86w28vQXKsq0NVKl+RsUm8sGgn28NjmTikFdUvt6S172erc73R\nNXDrF+B+YYLQOSIlnzMTST3geLbX4fb3LtbNGLPDGPOLMSbzV5ldQE9jTDVjjDdwA5DZm1ZLRCLt\n358EHLDFmmsE+AbwWb9PmNZ7GjX94Jd6O+lY+Rrme3ZH1n0I77eHzbMhI93VoSp1iS3HzjJ+7hZ6\nTP6TBZvDGdMtgBsvd5RW6GqYP9aaaDjiG/D0uuCwzhEpHVz9bLgFaCAi8caYG4AfgWYistcYMxn4\nDUgAtgGX/DQVETHG5LiolTHmfuB+gAYNGjgr/iIzxtC3YV+61evG5zs+Z+au2bxW2Z0Po2/jc9lN\niyWPwcYZMPCtXCdkKVVcbOkZLNsZycy1YWw/fo5KXh7c0z2A0V0DqF819+XccxSx2SrlVm0Mdy6A\n8pUuOLw1aiuP/PEI7sadWQNm6fDeEsyIkxYXNMZ0BV4Rkf72188DiMibebQJA4JFJOai9ycB4SIy\n3RizH+gtIpHGmDrAKhFpkVcswcHBEhISUrQPVEyOxh1l0j9vsi5yLRkptekU05z3zQoqpZyEqwfD\n9a9BlQBXh6muMGcSUvl24zG+Wh/GqbgUGlWvyNjuAdza3p+K5Qvx+2jUPpg10FrJ957foPKFTzIr\nj67k2b+fpXbF2nx83cc6vNdFjDGbRSQ43/OcmEg8gANAXyAC2ATcISK7s51TGzhlf7LoBCwAGtpf\n1xSRKGNMA6wnky4ics4Y8zZwWkTeso8Eqyoiz+QVS2lKJGANcfzz+J+88c9bRCVFkh7bhocSvXjY\n9jPuZEDXcdDziUt+g1PK0fafPM+staEs2hpBSloGPZtVZ2z3AHo3r4mbWyH7Kc4ehZkDQNLhnuXW\nE0k23+77ljc3vElg9UA+7PuhDu91IZcnEnsQNwDTAHdgpoi8YYx5EEBEPjHGjAceAtKAJOAJEVln\nb/s3UA2w2d9faX+/GvA90AA4CtwmInnO6ittiSRTUloSX+z8gi92ziQt3Q3P6G586B5Bt/MrwKcW\n9J0AbUfmuVe1UpcrI0P4c38Us9aGseZQDOU93LilfT3GdGtEi9pF/OUlPgpm9ofE0zBmGdRunXVI\nRHhvy3t8sesLetfvzZReU3R4r4uViERSUpTWRJLpWNwxJm14k7Un1pCRUovGMcHM8PqbWnG7oG47\nGDAZGnR2dZiqlItPSWPh5nBmrwsjNCaBWpXLM7prACM7NSjcelkXSzoHs2+CM4dh9E9Qv1PWIVu6\njQnrJrDkyBKGNx/OC51f0OG9JYAmkmxKeyIB67e1VcdX8cY/b3IqKRJbbBuGJ/vzEj9SPvEktB4G\n/V4FX39Xh6pKmeNnEvlyXRjzNh3nfEoaQfX9uKdHIwa2ro2nu4OedlMTrHlSEVvgjnnQtG/WofjU\neB5f9Tj/RP7DI+0e4b7A+3R4bwmhiSSbspBIMiWnJTNz10w+3zGDtHQ30qN7MdkrmZtiF1r/83V/\nzPoqd5kjaNQVRUTYGHqGmWtD+X3PKYwx3BBYh7HdA2jfwMF9Emmp8N1Ia+WGYbOg1b9DeKMTo3l4\n5cMcPHuQV7q9osN7SxhNJNmUpUSS6XjccSZteIs1J1YjKTWperoPM3230zTqN6hcD657FQKHXbLM\nhLqypaSls2R7JDPXhLInMg4/b0/u6NSAUV0bUsfXCf0RGemw8F7Y/YM1Y73D3VmHjsQe4aHfH+Js\nylne6f2OLgFfAmkiyaYsJpJMfx3/i9f/eZOTiRHYYtvQO6UtU8v/iM+Z3eDfyZp/Uq+Dq8NULhZ9\nPoU5/xzlmw1HiYlPpVlNH8Z2b8TQdvWoUM7dOTcVgaX/Z02q7fcadH8061D2OSLTr5uuc0RKKE0k\n2ZTlRAKQkp5ilbu2z8CWDinR1/JiJR/uOv817onR1siuvhMuGauvyr5dEbHMWhvGku0nSE3PoE+L\nGtzToxE9mlZ3fj/EildgzbvQ4wm4bkLW2zpHpPTQRJJNWU8kmcLPh/PmhsmsjliFpNakXMxAvqh1\nnKCIuRg3T+j5OHQdD546pLIsS88Qft9ziplrQ9kYegbvcu4M6+DP3d0CaFLDp3iCWDMNVkyADmPh\npnezSqw6R6R00USSzZWSSDKtDl/N6+vfJDIxHFtcIG1Sr+FjvxVUO/4b+DawZse3HKL9J2VMXLKN\n7zcdZ/a6MMLPJlHPrwJjugVwW8f6+FbwLL5ANs+GJY9Bq1vg1hng5q5zREopTSTZXGmJBKxy1+xd\ns/l0+2dWuSvmWh6o0oxHk2fhGbMHGnaHAW9CnbauDlUVUWhMArPXhrJgczgJqel0CqjK2O4B9GtZ\nCw9HDd8tqF0/wIJ7oOl1MGIueJTTOSKlmCaSbK7ERJIpIj6CtzZMZlX4n0hqDYgZzEcNU+gV/ikm\n8Qy0HwXX/hd8aro6VHUZRIS1h04za20of+yPwsPNMKhtXe7p3ojW9XxdE9ShFTB3hDW4Y9QiKOet\nc0RKOU0k2VzJiSTTmog1vLb+DU4khGOLa01j2418Xm8L9fZ/CR4V4JqnofOD4FGI7VFVsUm2pbNo\nawSz1oZy4FQ81SqW484uDbmrSwNqVvLK/wLOkHjGmiOy+BGo2gTGLIUKfjpHpAzQRJKNJhJLanoq\ns3fP5pPtn2FLF1Ki+zCiRldeMN/iFfo7VGkE/d+AFjdo/0kJczI2ma//CWPuhmOcTbRxdZ3K3NM9\ngEFt6+Ll6aThu7mJj4aja+1f6+DUbkCgWjMYuwx8al4wR+Td3u/SvV734o1ROYQmkmw0kVzoRPwJ\n3to4hT+Pr0RSq5MRczNTWlTlxhMfYGL2Q+Pe0P9NqJXTzsiqOG07fo6Za0JZtjOSdBH6XV2Le3o0\nonOjqsVXIoqLtJJG2BorccTst9739LbWy2rYAwK6WyUtj/JZc0Q8jAcfXfeRzhEpxTSRZKOJJGdr\nI9Yycf0bnEg4ji2uFfVst/J582M03vU+pMRZQzf7vAgVq7k61CuKLT2D5btOMnNtKFuPncOnvAe3\nd6zP3V0DaFCtGJa+OXcMwtbCUXviOHPEer98ZWjQBRp2s5JH3SBwv3A0WOYckToV6/DxdR/jX0nX\nfivNNJFko4kkd6npqXy15ys+3vYpqenppET3YVCt/kys/AsVt39pbTzU+3noeO8lPzSUY51NSOXb\nTcf4ev1RImOTaVjNmzHdAhjWwZ9KXk76sxexEsXRtfbksRZi7Ttke/lZo/sadrOeOGq3Abfcy2hZ\nc0RqBPLhtTpHpCzQRJKNJpL8RcZH8tbGKfxxfAWSWo2M0zczoU1Lhsd8jNuRP6B6c+g/CZr1c3Wo\nZc7BU+eZtS6MH7aEk2zLoFuTatzTvRF9rqqJe2E3j8qNCETvv7CP43ykdcy7upUwGtq/arbMc6+b\ntIw0Dpw9wJZTW9gQuYFV4at0jkgZo4kkG00kBbfuxDpeWzeJ8ISj2M63pHbqcKa3z6DljresfSSa\n9rMSSo3mrg61VMvIEP46EM3MtaH8fTCGch5uDA2qx9geAVxVu7IjbwRRey7s40i072RdqY6VMDKT\nR/XmeQ6ySE5LZmfMTrac2sKWqC1sj95Ogi0BgHo+9RjYaCDjgsbpHJEyRBNJNppILo8t3cZXe75i\n+rZPrHJXTG/61b6FN+tuovKGd8GWAB3vg97PQgUtX1yOhJQ0ftgSzqy1YRyJSaBmpfKM7tqQkZ0a\nUM3HAUOv09Pg5A4rYWQ+cSSfs475Nsj2xNHN2uI2j8QRmxLL1qitWYlj9+ndpGWkYTA0rdKU9jXb\n06FWB9rVbEftirWLHrsqcTSRZKOJpHBOJpxk8sa3WXHsN3u5awjPdOjJqKSvcd/6lVVD7/OC1Snv\nrr+F5iX8bCJfrT/KtxuPcT45jTb+vvynRyMGtq5DOY8izD5Pt8GJrf/2cRz7B1LPW8eqNrY/cfSw\nEodfgzwvFRkfyZaoLVmJ49C5QwB4uHnQulpr2teyEkfbGm3xLe+iSY+qWGkiyUYTSdGsP7Ge19ZP\n4nh8GLbzV1Pbdhvv9qhFu92TIexvq5befxI06ePqUEsUESHk6Flmrgnl190nMcYwoHVt7rFvHlWo\n4bu2ZIjY/G8fx/GNYEu0jlVvcWEfRx6rPWdIBkfOHbEShz15RCZYfSUVPSsSVDOI9jXb075me1pX\nb42Xh4smOyqX0kSSjSaSorOl25izdw4fbp1uL3ddw7W1b+PNqyKosmYinDsKLW60FoSs1sTV4bpU\naloGS3ecYNbaMHZGxOJbwZMRneozumsA9fwusxM6NRHCN9pHVK2D8E2QngIYqNXq3z6OBt3Ap0au\nl7Gl29hzZo/1tHFqC1ujtxKbEgtA9QrVraRRy0oczas0xz2P0VnqylEiEokxZgDwHuAOzBCRty46\n3hv4CQi1v/WDiEy0H3scuBcQYCcwVkSSjTGvAPcB0fY2L4jIsrzi0ETiOCcTTjJl41R+P/YrklqV\njNNDeLzTAMa6/4LH2ncgLQW6PAS9ngYvB3YalwIx8SnM3XCMr/85SvT5FJrUqMjY7o24pX09vMsV\nsPSXch6ObbDmcISttcpWGTYwbtYCm5lPGw26gHfVXC+TYEtge9T2rCeOndE7SU5PBiCgcgDtaraz\nSlU1O+BfyV/Xv1I5cnkiMca4AweAfkA4sAkYKSJ7sp3TG3hKRG66qG09YA3QUkSSjDHfA8tEZLY9\nkcSLyNSCxqKJxPE2RG7g1XWvczw+jLTzV1HLdjtT+rak05GPYNs3ULG6tRhku7vynHtQFuw5Eces\ntaH8tP0EqWkZXNPc2jyqZ9PquOU3fDfprNWvkTmiKnI7SDq4eUDd9vY5HD2gfuc8E3NMUswFHeP7\nz+wnXdJxM25cVfWqrCeOdjXbUb1CdQf/CaiyqqCJxJk9pJ2AQyJyxB7Qd8AQYE+erf7lAVQwxtgA\nb+CEU6JUhdK5Tmd+GvoDc/fO5YMtH3E6/Q3u+u0arq0zitfuGEWNvyfAkkdh0+cwYLJVfilD0jOE\nlXutzaP+OXKGCp7u3Bbsz5hujWhaM4/NoxJO/9u/EbYWTu0CBNzLgX9H6PmE9cRRvxOUq5jjJUSE\n4+ePX9AxfjTuKABe7l4E1gjk3sB7aV+rPW1rtKWiZ87XUcpRnPlEMgwYICL32l+PAjqLyPhs5/QG\nfsB6YonAejrZbT/2GPAGkAT8JiJ32t9/BRgLxAIhwJMicjaH+98P3A/QoEGDDkePHnXK51QQlRjF\nlI1v8+vR5YitKhkxg3mk82Duq7odjz9esWZKtxxi7dtdpaGrwy2S88k2vg8J58t1YRw7k0hdXy/u\n7hbAiI4N8PXOYfb5+ZMXzhqP3me971HBvk6VvY+jXjB45tyhnZ6Rbk38y5Y4YpKsuSC+5X2tMpX9\niaNl1ZZ46goEykFKQmmrIImkMpAhIvHGmBuA90SkmTGmCrAQuB04B8wHFojIHGNMLSAGq+/kNaCO\niNyTVyxa2ioem05u4tV1r3P0/BHS4ltQM/V23hrYla6n5lp7d2ekQ7fx1h7e5Ytpy1cHCYtJYPa6\nMBZsDic+JY3ghlUY270R/VtdtHnUueP2ORz2Po4zh633y/nY16my93HUbQce5XK8V3JaMrtidmUl\njm3R27Im/tWpWCerU7x9zfY09muMmynmzavUFaMkJJKuwCsi0t/++nkAEXkzjzZhQDDQBysJ/cf+\n/migi4g8fNH5AcBSEWmdVyyaSIqPLcNmL3dNJyU9lZSYXlxbZwSvXlOTWhvegp3fg09tuG4CtBmR\n5xIcriYirD98mplrw1i57xTuxnBTmzqM7d6ItvX9rOVGzoZaiSNzkcNzx6zGXr7WSKoA++S/2m1z\nnWsTmxLLtqhtWYlj9+nd2DJsADT1a3rBiKo6PrkP6VXK0UpCIvHA6mzvi1W22gTckVm6sp9TGzgl\nImKM6QQsABpi9a/MBDpilbZmAyEi8oExpo6IRNrbP471lDMir1g0kRS/6MRopmyayvKwZYitilXu\n6nIz9wacxvP35625EHXbw8DJVomnBEm2pbN42wlmrg1l38nzVK1Yjjs7N+Cuzg2olXr831Vxw9bC\neXvXnXe1f1fFDchcpyrnQQYnE05mlai2RG3h0NlDCIKHmwetqrXKShrtarbTiX/KpVyeSOxB3ABM\nwxr+O1NE3jDGPAggIp8YY8YDDwFpWAnjCRFZZ2/7KlZpKw3YCtwrIinGmK+BIKzSVhjwQGZiyY0m\nEtexyl1vcPT8YdLim1Mz9XYm3dSb7ol/wIpXrAUDA4fDda+Ar2uXHD8Vl8ycf47yzYZjnElI5epa\nFfm/NulcW+EgnuHrreSREGWd7FMr2zpVPaBGixyXGxERjsQeyXra2Bq1lYj4CAC8Pbz/nfhXy5r4\np4sdqpKkRCSSkkITiWvZMmx8t+873t/yIclpKaSc7sW1tUfyyvXNqL3zE1j3AWCgx/9Bt0ehXDHs\nuZHNjnBr86hfdkbQTMIYVTuc67wPUvX0ZkySfRxHZf9/Z40H9Mh1nSpbho29p/dmPXFsjdrKuRRr\nratqXtX+7d+oZU380wUOVUmmiSQbTSQlQ0xSDG9v/B/LwpYiNj8yTg/mkc5D+U9rD8r9+QrsXmT9\nwO73KrS+1anb/aalZ/DbznD+Xr2Cyqc20s1jH53dD+CVYXVqU6XRhSvj5jLaLNGWyPbo7VlPHDui\ndwlxPw8AAApHSURBVGRN/GtQqcEFiaNBpQY68U+VKppIstFEUrJsPrWZV9a+Ttj5Q6TFN6Nm6ggm\nDbqW7p4HYPlz1qS8+p1hwJvW9q2OkpZC/JGN7Fm/DMLW0ipjHxVNCgDp1ZrhnlmmatgNfOv9f3v3\nHiNVeYdx/PvAgtzvy1W5FAyKUmRVKHJJK2qroo3U1Bb9w0tSm1hj2zRNbdpSa2MvsXhJjLXBKqlX\npLWxaiiWWltRURYWAUWwgIoCC3hZV1Zgd3/94xy2g7KIc3Y9O/B8ksnOzsyZ83t3M3nmvOe873vA\nt9hZt5Oq6ioqqytZvm05a99e2zTwb3Tv0fsFhwf+WalzkBRwkLQ99Y31PPjKg9xceWva3TWV0wfO\nYvY5Yxm08WFYfB18sB3GzUqu8OpexDTle+uSuak2LWHX+qfosKWSDrEHgNfKhqNhkxky/swkQLr1\n/9jmEcHm2s1N5zYqt1WyqWYTAEe1P4qx/cY2Bce48nF061halzSbfRIHSQEHSdu1o24HN74wh8c2\n/i3t7jqPqyfO5IpT+9HxmTnw3O3QrkMy4nvSd5odtAfA7lp4Y2nTAMB4sxI17qWRdqxpHMqyGIOG\nT2bSl85j9Oc+3lXV0NjAq+++SuW2yuT8xrYVVNclJ9d7dOzRND9VRf8KxvQdQ8f2Bx4HYna4cJAU\ncJC0fSuqV/DzJdezoWZ90t219yJumDGdyX1qYNFPYe2jyXoaZ/0Sjj8/OX9S924SHJueTsLjrSqI\nBkLt2dFjDIvrjuXvtSPZ2GUsMyeNYdbEofQrWDxqd8NuVu9Y3XS0sbJ6Je/vTdbyGNh1YNOgv4oB\nFYzsNdID/+yI4yAp4CApDfWN9cx/ZT43V95KXf2H7N45JenumjGeQTufh4XXQvWaZE6q+t2wdRVN\n81QNOZmagRN5rGYEt6ztzdYPyzhxSA8unzyCcz8/iKPK2lOzpyYZ+Jd2Va3asapp4N/IniOTo430\niGNwt8H5/jHM2gAHSQEHSWnZWbeTG5fN4dENjxB7e6bdXV/jitOG0nHln+DZ26DHYBg+hRh2Gisa\nR3Hn0q0sXL2ViODLJwzk8ikjOKZ8T3JiPO2qWv/O+mTgn8oY029M0xHH+P7j6dWpV97NNmtzHCQF\nHCSlqaq6itlLrmdDzTrqPxiVDmY8g8mj+rGnvpHHV23hriUbWbn5Pbp3as+5FWWMHFrNpto1VG6r\n3G/g37jycU1HG2PLx3rgn9khcJAUcJCUrobGBh5a9xBzlt1CXf0udu+cyqm9v866LXXs3LuR/uVv\nMXjAFrbXr20a+NenU5//z081oILRvUd74J9ZERwkBRwkpe/tD9/mdy/cxCMb/goNXWnXrp7GdAzI\nMd2P2W9iw2E9hnngn1kLcJAUcJAcPlZuX8m8NfMo71zetOJf/y4fHwNiZtm1hRUSzVrcuPJxzPni\nnLzLMLMCvjDezMwycZCYmVkmDhIzM8vEQWJmZpk4SMzMLBMHiZmZZeIgMTOzTBwkZmaWyRExsl3S\nduC1IjfvB+xowXLy5La0PYdLO8BtaauytGVYRJR/0ouOiCDJQtKyQ5kioBS4LW3P4dIOcFvaqs+i\nLe7aMjOzTBwkZmaWiYPkk/0h7wJakNvS9hwu7QC3pa1q9bb4HImZmWXiIxIzM8vEQdIMSZ0kPS9p\npaQ1kq7Lu6YsJLWXtELSo3nXkoWkTZJWSaqSVNKrlUnqJWmBpLWSXpY0Ke+aiiFpdPr/2HerkfTd\nvOsqhqTvpZ/31ZLul9Qp75qKJematB1rWvv/4a6tZihZq7VrRNRK6gA8DVwTEc/lXFpRJH0fOAXo\nEREz8q6nWJI2AadERMlf4y9pHvCfiJgrqSPQJSLezbuuLCS1B94EJkZEsWO3ciFpCMnnfExE1Ema\nDzweEXfnW9mnJ+lE4AFgArAHWAh8OyJebY39+YikGZGoTX/tkN5KMnUlHQ2cC8zNuxZLSOoJTAPu\nBIiIPaUeIqnpwH9LLUQKlAGdJZUBXYC3cq6nWMcDSyNiV0TUA08BM1trZw6Sg0i7g6qAauCJiFia\nd01Fuhn4IdCYdyEtIIB/SKqU9K28i8lgBLAduCvtcpwrqWveRbWAbwD3511EMSLiTeBG4HVgC/Be\nRCzKt6qirQamSuorqQtwDnBMa+3MQXIQEdEQEScBRwMT0sPFkiJpBlAdEZV519JCpqT/k7OBqyRN\ny7ugIpUBFcDtETEe+AD4Ub4lZZN2z50PPJR3LcWQ1Bv4KknIDwa6Srok36qKExEvA78BFpF0a1UB\nDa21PwfJIUi7HJ4EvpJ3LUWYDJyfnlt4ADhd0j35llS89FsjEVENPEzSB1yKNgObC45yF5AESyk7\nG1geEdvyLqRIZwAbI2J7ROwF/gKclnNNRYuIOyPi5IiYBrwDrGutfTlImiGpXFKv9H5n4Exgbb5V\nfXoRcW1EHB0Rw0m6Hf4ZESX5LUtSV0nd990HziI5hC85EbEVeEPS6PSh6cBLOZbUEr5JiXZrpV4H\nviCpS3qxzXTg5ZxrKpqk/unPoSTnR+5rrX2VtdYbHwYGAfPSq1DaAfMjoqQvnT0MDAAeTj7jlAH3\nRcTCfEvK5Grg3rRLaANwWc71FC0N9jOBK/OupVgRsVTSAmA5UA+soLRHuP9ZUl9gL3BVa17M4ct/\nzcwsE3dtmZlZJg4SMzPLxEFiZmaZOEjMzCwTB4mZmWXiIDEzs0wcJGZtRDpFfr8it71U0uCWeC+z\nT8tBYnZ4uJRkfiizz5yDxOwjJA1PF5u6W9I6SfdKOkPSEknrJU1Ib8+mM/c+s2+qk3RhpD+m98em\nCwt1aWY/fSUtShcemguo4LlL0oXVqiTdkc6wgKRaSTel2yxOp/K5kGStmXvT13dO3+ZqScvThcCO\na82/mR3ZHCRmBzYK+B1wXHqbBUwBfgD8mGTetanpzL0/A25It7sFGCXpAuAu4MqI2NXMPmYDT0fE\nCSQTUA4FkHQ8cBEwOZ3puAG4ON2mK7As3eYpYHZELACWARdHxEkRUZe+dkdEVAC3p3WbtQrPtWV2\nYBsjYhWApDXA4ogISauA4UBPkrnYjiVZI6UDQEQ0SroUeBG4IyKWHGQf00gXG4qIxyS9kz4+HTgZ\neCGdV6wzyZo4kKwp82B6/x6SGWqbs++5SlpxUSMzB4nZge0uuN9Y8HsjyefmeuDJiLhA0nDgXwWv\nPxaopfhzFgLmRcS1h/Dag02Wt6/mBvxZt1bkri2z4vQkWZsckhPdQNMSureSHG30Tc9fNOffJF1m\nSDob6J0+vhi4sGAa8D6ShqXPtQP2vecskjXGAd4Humdoj1nRHCRmxfkt8CtJK9j/2/5NwG0RsQ64\nAvj1vkA4gOuAaWnX2UyS9TCIiJeAnwCLJL0IPEGyrAEkKylOkLQaOB34Rfr43cDvP3Ky3ewz4Wnk\nzUqIpNqI6JZ3HWaFfERiZmaZ+IjErJVJugy45iMPL4mIq/Kox6ylOUjMzCwTd22ZmVkmDhIzM8vE\nQWJmZpk4SMzMLBMHiZmZZfI/5kZD5KY+HvcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1383a4ea470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xgb2 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=345,    #第一轮调整得到的n_estimators最优值\n",
    "        gamma=0,\n",
    "        subsample=0.5,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "max_depth = range(3,10,2)          # max_depth 建议3-10\n",
    "min_child_weight = range(1,6,2)        # min_child_weight=1／sqrt(ratio_rare_event) = 3.6\n",
    "param2_1 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "\n",
    "gs2_1 = GridSearchCV(xgb2, param_grid = param2_1, scoring='neg_log_loss', cv=kfold)\n",
    "gs2_1.fit(X_train , y_train)\n",
    "\n",
    "print(\"Best parameters:\", gs2_1.best_params_)\n",
    "print('Best cv_logloss:', -gs2_1.best_score_)\n",
    "\n",
    "# 可视化\n",
    "cv_scores = gs2_1.cv_results_['mean_test_score'].reshape(len(max_depth), len(min_child_weight))\n",
    "fig = plt.figure()\n",
    "for i, value in enumerate(min_child_weight):\n",
    "    plt.plot(max_depth, -cv_scores[:,i], label='min_child_weight '+ str(value))\n",
    "plt.xlabel('max_depth')\n",
    "plt.ylabel('Log Loss')\n",
    "plt.legend(loc='upper right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第二次调整：在粗调最佳参数周围，将步长降为1，进行精细调整。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best parameters: {'max_depth': 5, 'min_child_weight': 5}\n",
      "Best cv_logloss: 0.582227691854\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nY4Li/wFsaVRdFZoPqQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1383a464358>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "max_depth = [4,5,6]\n",
    "min_child_weight = [4,5,6]\n",
    "param2_2 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "\n",
    "gs2_2 = GridSearchCV(xgb2, param_grid = param2_2, scoring='neg_log_loss', cv=kfold)\n",
    "gs2_2.fit(X_train , y_train)\n",
    "\n",
    "print(\"Best parameters:\", gs2_2.best_params_)\n",
    "print('Best cv_logloss:', -gs2_2.best_score_)\n",
    "\n",
    "# 可视化\n",
    "cv_scores = gs2_2.cv_results_['mean_test_score'].reshape(len(max_depth), len(min_child_weight))\n",
    "fig = plt.figure()\n",
    "for i, value in enumerate(min_child_weight):\n",
    "    plt.plot(max_depth, -cv_scores[:,i], label='test_min_child_weight '+ str(value))\n",
    "plt.xlabel('max_depth')\n",
    "plt.ylabel('Log Loss')\n",
    "plt.legend(loc='upper right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.3 再次调整 n_estimators"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best n_estimators: 335\n",
      "Best cv_logloss: 0.586798666667\n"
     ]
    },
    {
     "data": {
      "image/png": "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\noYGJEydy9tlns2LFCq655ho+9KEP8cEPfjDFlXbImrAYVlIBQFujzoYSyVaJ7gHE9ih++Y8nJaUO\nd+czn/kMN9544z7TXnvtNX73u99x++2389BDD3HnnXcmpYa+ypqzoYZFexY0KSxEJLXOPPNMHnzw\nQbZu3QqEs6bWrVvHli1bcHc+8YlPcMMNN7B48WIAysrKqKtL7XdX1uxZ5BUW0+x50LQ71aWISJY7\n8sgj+fa3v82ZZ55Je3s7+fn53HHHHeTm5vLZz34Wd8fMuOWWWwCYM2cOV155pRq4B0u9FWMtCgsR\nGXzXX3/9e55fdtllXHbZZfvM98orr+wz7uKLL+biiy9OVmkJybKwGEauwkJEepGstopMljVtFgBN\nOcXktexJdRkiIhknaWFhZvPNbLOZvdHNdDOz/zazlWb2mpkdm6xaYppyh1HQprAQEemrZO5Z3AOc\n08P0c4GDo2Eu8KMk1gJAS24pBW31yV6NiMiQk7SwcPfnge09zHI+cK8HfwMqzGxcsuoBaM0robBd\nYSEi0lepbLOYAKyPe14djduHmc01s0VmtmjLli39XmFbfinDXGEhIr24+0NhkL0yooHb3e9091nu\nPquysrLfy2kvKKHYGwawMhGR7g1EF+Vz5sxhxYrU31ohlafObgAmxj2visYlT0EZpdZIc0srBflZ\nddawiKRAIl2UuzvuTk5O13+733333UmvMxGp3LN4BPj76KyoE4Fd7l6TzBVaYRkAu+vUTbmIpM7K\nlSuZPn06n/rUp5gxYwY1NTXMnTuXWbNmMWPGDG644Ya985566qksWbKE1tZWKioqmDdvHkcffTQn\nnXQSmzdvHrSak/bntZndD8wGRptZNfBtIB/A3e8AngDOA1YC9cCcZNUSk1Mc+oeqr9vOyJGjkr06\nEUk3v5sHG1/vfb6Nr4WfibRbjD0Szr25z6W8+eab3HvvvXt7nr355psZOXIkra2tnH766Vx00UVM\nnz79Pa/ZtWsXp512GjfffDPXXnst8+fPZ968eX1ed38kLSzc/dJepjvwhWStvyt5Uc+zDbU7BnO1\nIiL7mDZt2t6gALj//vu56667aG1t5d1332XZsmX7hEVxcTHnnnsuAMcddxwvvPDCoNWbVQfuC6Kw\naKzr6YxeERmyEt0DiO1RzHk8aaWUlJTsffz2229z6623smDBAioqKrj88stpbGzc5zXxHQjm5ubS\n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\nzJ0HCiEhAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1380032efd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xgb3 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=500,\n",
    "        max_depth=5,            # 第二轮调整得到的max_depth最优值\n",
    "        min_child_weight=5,     # 第二轮调整得到的min_child_weight最优值\n",
    "        gamma=0,\n",
    "        subsample=0.5,      \n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "cv_result = best_n_estimators(xgb3, dtrain, kfold, 50)\n",
    "n_estimators_3 = cv_result.shape[0]\n",
    "cv_logloss_3 = cv_result['test-mlogloss-mean'][n_estimators_3 - 1]\n",
    "print(\"Best n_estimators:\", n_estimators_3)\n",
    "print('Best cv_logloss:',cv_logloss_3)\n",
    "n_estimators_plot(cv_result)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.4 调整树的参数：subsample & colsample_bytree"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第一次调整：将参数的步长设为0.1，进行粗调。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best parameters: {'colsample_bytree': 0.9, 'subsample': 0.8}\n",
      "Best cv_logloss: 0.579939468471\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1383a875b70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xgb4 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=335,     #第三轮调整得到的n_estimators最优值\n",
    "        max_depth=5,            # 第二轮调整得到的max_depth最优值\n",
    "        min_child_weight=5,     # 第二轮调整得到的min_child_weight最优值\n",
    "        gamma=0,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "subsample = [i/10.0 for i in range(3,9)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,10)]\n",
    "param4_1 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "\n",
    "gs4_1 = GridSearchCV(xgb4, param_grid = param4_1, scoring='neg_log_loss', cv=kfold)\n",
    "gs4_1.fit(X_train , y_train)\n",
    "\n",
    "print(\"Best parameters:\", gs4_1.best_params_)\n",
    "print('Best cv_logloss:', -gs4_1.best_score_)\n",
    "\n",
    "# 可视化\n",
    "cv_scores = gs4_1.cv_results_['mean_test_score'].reshape(len(colsample_bytree), len(subsample))\n",
    "fig = plt.figure()\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    plt.plot(subsample, -cv_scores[i,:], label='colsample_bytree '+ str(value))\n",
    "plt.xlabel('subsample')\n",
    "plt.ylabel('Log Loss')\n",
    "plt.legend(loc='upper right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第二次调整：在粗调最佳参数周围，将步长降为0.05，进行精细调整。（由于得到的最佳参数已经是设置的最大边界值，观察上图中红色曲线趋势，可考虑将subsample的值只向更大的方向调整。）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best parameters: {'colsample_bytree': 0.9, 'subsample': 0.85}\n",
      "Best cv_logloss: 0.579907081513\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZgAAAEKCAYAAAAvlUMdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8VFX6+PHPk0kv1BBKQpMeSEgQEIK6YAGxUAwoPVSB\nVXF1bfi1rG7D1Z+6VgSlWlCKgIqCZV10EUOAEJoYBARCSwKGFNLP74+56QFCyGQS8rxfr3nNnXvv\nmXkuZZ4559xzjhhjUEoppaqai7MDUEopdWXSBKOUUsohNMEopZRyCE0wSimlHEITjFJKKYfQBKOU\nUsohNMEopZRyCE0wSimlHEITjFJKKYdwdXYAzuTv72/atGnj7DCUUqpW2bp1a5IxpsnFznNoghGR\nW4B/AzbgHWPMnFLH+wNrgIPWrlXGmOesYw8CUwED7AQmGWMyRWQk8BegC9DbGBNT7P1mA1OAPGCW\nMWb9heJr06YNMTExFzpFKaVUKSLyW0XOc1gTmYjYgDeAwUAwMFpEgss59XtjTJj1KEgugcAsoKcx\nphv2BDXKOn8XcCewsdTnBVvndAVuAd60YlBKKeUEjuyD6Q3sN8YcMMZkA8uAoZdQ3hXwEhFXwBs4\nBmCM2WuM2VfO+UOBZcaYLGPMQWC/FYNSSikncGSCCQSOFHt91NpXWoSIxInIFyLSFcAYkwC8CBwG\njgMpxpgNVfF5InKPiMSISExiYmLFr0YppdQlcXYn/zaglTEmTURuBVYDHUSkIfYaSVvgd2C5iIwz\nxrx3uR9ojJkHzAPo2bOnrlWgrig5OTkcPXqUzMxMZ4eirgCenp4EBQXh5uZWqfKOTDAJQMtir4Os\nfYWMMWeLba8TkTdFxB8YABw0xiQCiMgqIAK4UIK56OcpdaU7evQofn5+tGnTBhFxdjiqFjPGkJyc\nzNGjR2nbtm2l3sORTWRbsNdG2oqIO/YO+LXFTxCRZmL9LxCR3lY8ydibxvqIiLd1/EZg70U+by0w\nSkQ8RKQt0AGIrtIrUqqGy8zMpHHjxppc1GUTERo3bnxZtWGH1WCMMbkich+wHvtdYAuMMbtFZIZ1\nfC4wApgpIrnAOWCUsS+x+ZOIrMDehJYLbMdq1hKR4cBrQBPgcxGJNcYMst77Y2CPVeZeY0yeo65P\nqZpKk4uqKpf7b0nq8pLJPXv2NJUZB5OelcsL6/fx4M0dqe9VubZJpRxh7969dOnSxdlhqCtIef+m\nRGSrMabnxcrqVDGV8POJs7z/029MWxxDZo5WkpRSqjyaYCrh6taNeOmuMLb8dppZH24nL7/u1gKV\nuhx/+ctfePHFF6v9cxctWsR99913yeUuNd7Y2FjWrVt3yZ9TUVu3biUkJIT27dsza9YsymuRysnJ\nISoqipCQELp06cI///nPwmP9+/enU6dOhIWFERYWxqlTp6o0Pk0wlXRH9xY8c3swG/ac5MnVu8r9\ni1VK1W0XSjC5ubmX/f4zZ85k/vz5xMfHEx8fz5dfflnmnOXLl5OVlcXOnTvZunUrb7/9NocOHSo8\n/v777xMbG0tsbCwBAQGXHVNxzh4HU6tN7NeWxLQs3vjPrzTx8+Chmzs6OySlCj376W72HDt78RMv\nQXCLejxzR9cLnrNkyRJefPFFRITQ0FCWLl3KoUOHmDx5MklJSTRp0oSFCxfSqlWrEuVeffVV5s6d\ni6urK8HBwSxbtozo6GgeeOABMjMz8fLyYuHChXTq1IlFixaxevVq0tPTiY+P5+GHHyY7O5ulS5fi\n4eHBunXraNSoEf3796d79+7897//JTc3lwULFtC7d8kJPhITE5kxYwaHDx8G4JVXXqFfv37nvb4d\nO3bQt29fkpKSePTRR5k2bRoTJkzgzjvvZNiwYQCMHTuWu+66i6effppz587xww8/MHv2bPbu3cuv\nv/7KgQMHaNWqFe+99x6PP/443333HVlZWdx7771Mnz4dgBdeeIGPP/6YrKwshg8fzrPPPlsijuPH\nj3P27Fn69OkDwIQJE1i9ejWDBw8ucZ6IkJ6eTm5uLufOncPd3Z169epd8O+wqmiCuUwPD+xEYmoW\nr34TTxNfd8b3bePskJRymt27d/O3v/2NTZs24e/vz+nTpwG4//77iYqKIioqigULFjBr1ixWr15d\nouycOXM4ePAgHh4e/P777wB07tyZ77//HldXV77++mueeOIJVq5cCcCuXbvYvn07mZmZtG/fnuef\nf57t27fz4IMPsmTJEv70pz8BkJGRQWxsLBs3bmTy5Mns2rWrxOc+8MADPPjgg1x77bUcPnyYQYMG\nsXfv+UdFxMXFsXnzZtLT0wkPD+e2225jypQpvPzyywwbNoyUlBQ2bdrE4sWLOXPmDDExMbz++uuA\nvYltz549/PDDD3h5eTFv3jzq16/Pli1byMrKol+/fgwcOLCwRhIdHY0xhiFDhrBx40auv/76wjgS\nEhIICgoqfB0UFERCQtmhfyNGjGDNmjU0b96cjIwMXn75ZRo1alR4PCoqCjc3NyIjI3nyySer9C5E\nTTCXSUT4x/AQTqdn8/Ta3TT29eDWkObODkupi9Y0HOHbb79l5MiR+Pv7AxR+kf3444+sWrUKgPHj\nx/Poo4+WKRsaGsrYsWMZNmxYYU0gJSWFqKgo4uPjERFycnIKzx8wYAB+fn74+flRv3597rjjDgBC\nQkKIi4srPG/06NEAXH/99Zw9e7YweRX4+uuv2bNnT+Hrs2fPkpaWhq+vb7nXOHToULy8vPDy8mLA\ngAFER0czbNgw/vjHP5KYmMjKlSuJjIzE1bX8r9chQ4bg5eUFwIYNG4iLi2PFihWF1xsfH8+GDRvY\nsGED4eHhAKSlpREfH18iwVRUdHQ0NpuNY8eOcebMGa677jpuuukmrrrqKt5//30CAwNJTU0lMjKS\npUuXMmHChEv+jPPRPpgq4Gpz4bXRPbi6VUP+tCyWTb8mOTskpWqdzz//nHvvvZdt27bRq1cvcnNz\neeqppxgwYAC7du3i008/LTHoz8PDo3DbxcWl8LWLi0uJ/o3Sv8hLv87Pz2fz5s2F/RAJCQnnTS4X\ner8JEybw3nvvsXDhQiZPnnze8j4+PoXbxhhee+21ws8+ePAgAwcOxBjD7NmzC/fv37+fKVOmlHif\nwMBAjh49Wvj66NGjBAaWne7xgw8+4JZbbsHNzY2AgAD69etXuExJwfl+fn6MGTOG6OiqHZuuCaaK\neLnbeCeqJ238vblnyVZ2JaQ4OySlqt0NN9zA8uXLSU5OBihsIouIiGDZsmWAvVP5uuuuK1EuPz+f\nI0eOMGDAAJ5//nlSUlJIS0sjJSWl8Etw0aJFlYrpo48+AuCHH36gfv361K9fv8TxgQMH8tprrxW+\njo2NveD7rVmzhszMTJKTk/nuu+/o1asXABMnTuSVV14BIDjYvjKJn58fqamp532vQYMG8dZbbxXW\nzH755RfS09MZNGgQCxYsIC0tDbA3h5W+w6t58+bUq1ePzZs3Y4xhyZIlDB1adsL6Vq1a8e233wKQ\nnp7O5s2b6dy5M7m5uSQl2X8M5+Tk8Nlnn9GtW7cLXvul0gRThRp4u7N4cm/qeboyceEWDidnODsk\npapV165d+b//+z/+8Ic/0L17dx566CEAXnvtNRYuXFjY6f/vf/+7RLm8vDzGjRtHSEgI4eHhzJo1\niwYNGvDoo48ye/ZswsPDK33XlaenJ+Hh4cyYMYN33323zPFXX32VmJgYQkNDCQ4OZu7cuRd8v9DQ\nUAYMGECfPn146qmnaNGiBQBNmzalS5cuTJo0qfDcAQMGsGfPHsLCwgoTXXFTp04lODiYHj160K1b\nN6ZPn05ubi4DBw5kzJgx9O3bl5CQEEaMGFFuonrzzTeZOnUq7du3p127doUd/GvXruXpp58G4N57\n7yUtLY2uXbvSq1cvJk2aRGhoKFlZWQwaNIjQ0FDCwsIIDAxk2rRpFf+DrQAdye+AFS33n0plxNwf\nqe/lxooZETTx87h4IaWqgI7kL6l///68+OKL9Ox50UHnly0jI4OQkBC2bdtWppZUm+lI/hqmfYAf\nCyb24uTZTCYtiiYt6/Lvd1dK1Vxff/01Xbp04f7777+iksvl0rvIHKRHq4a8NfZqpi6JYfrSGBZM\n7IWHq67grFR1+u677ypVbuHChWWa8fr168cbb7xR7vk33XQTv/1WoWXq6xRNMA40oHMA/4oM5c/L\nd/Dnj3fw6qhwXFx0plularpJkyaV6EtRlaMJxsEirw4iKS2Lf37xM/6+HjxzR7BOp66UqhM0wVSD\n6X9oR1JaFvO/P0gTPw/uHdDe2SEppZTDaYKpJrMHdyEpLZsX1u+jsY87o3q3unghpZSqxTTBVBMX\nF+FfI0I5nZ7NE5/spLGvBzcHN3V2WEop5TB6m3I1crO58ObYHoQENeC+D7ax5dBpZ4eklFPpejCX\npyLrwWRnZzNp0iRCQkLo3r17pe+sqwxNMNXMx8OVhRN7EdjQiymLtrDvxPmnkVBK1W41YT2Y+fPn\nA7Bz506++uor/vznP5Ofn3/Zn10R2kTmBI183FkyuTeRb21iwoKfWDkzgqCG3s4OS11pvngcTuys\n2vdsFgKD51zwFF0PpmatB7Nnzx5uuOEGAAICAmjQoAExMTFl/hwcQWswThLU0JvFk3uTkZ3HhAXR\nnE7PdnZISl22gvVgvv32W3bs2FE4WLFgPZi4uDjGjh3LrFmzypSdM2cO27dvJy4urnA+sIL1YLZv\n385zzz3HE088UXj+rl27WLVqFVu2bOH//u//8Pb2Zvv27fTt25clS5YUnlewHsybb75Z7izHBevB\nbNmyhZUrVzJ16tQLXmNcXBzffvstP/74I8899xzHjh1jypQphZNxFqwHc9ttt/Hcc89x9913Exsb\ny9133w3Yv/C//vprPvzwQ959993C9WC2bNnC/PnzOXjwIBs2bChcDyY2NpatW7eycePGEnFUdD2Y\n7t27s3btWnJzczl48CBbt27lyJEjF7zGqqI1GCfq3Kwe70b1Yty7PzF50RY+mHYN3u76V6KqyEVq\nGo6g68HUvPVgJk+ezN69e+nZsyetW7cmIiICm616ZhXRbzMn6922Ea+NDmfme1v54/vbmD+hJ242\nrViquufzzz9n48aNfPrpp/z9739n586dhevBfPLJJxw6dIj+/fsXnl/V68F4enpWKM6LrQezbNky\nFi5ceN7y5a0HM2jQoBLnrF+/ntmzZxc2l5WnouvBuLq68vLLLxe+joiIoGPH6lneXb/JaoBBXZvx\n9+EhfLcvkcdWxJGfX3dnuFa1m64HU/PWg8nIyCA9PR2Ar776qrCPqzpoDaaGGN27FUmpWfy/r36h\niZ8Hs2/VKddV7VN8PRibzUZ4eDiLFi3itddeY9KkSbzwwguFnfzFFawHk5KSgjGmxHowUVFR/O1v\nf+O2226rVEwF68Hk5OSwYMGCMsdfffVV7r33XkJDQ8nNzeX666+/4JowBevBJCUllbseTEHzHtib\n8ebMmUNYWBizZ88u815Tp07l0KFD9OjRA2MMTZo0YfXq1QwcOJC9e/fSt29fAHx9fXnvvfcICAgo\nUf7NN99k4sSJnDt3jsGDB5dYDyYmJobnnnuOU6dOMWjQIFxcXAgMDGTp0qWX/odYSboejAPWg6ks\nYwzPrN3Nkh9/4/9u7cK0669ydkiqltH1YErS9WAun64Hc4UQEZ65oyu3hTTn7+v28sn2oxcvpJRy\nOl0PpnzaRFbD2FyEl+7uzpmMbB5ZHkdDb3f6dwq4eEGlVBm6HoxzObQGIyK3iMg+EdkvIo+Xc7y/\niKSISKz1eLrYsQdFZLeI7BKRD0XE09rfSES+EpF467mhtd9NRBaLyE4R2SsiZRs8awkPVxtvj7+a\njk39mPneNrYfPuPskJSqUyZNmkRsbGyJx/mSizo/hyUYEbEBbwCDgWBgtIiUd+vC98aYMOvxnFU2\nEJgF9DTGdANswCjr/MeBb4wxHYBvrNcAIwEPY0wIcDUwXUTaOOTiqoGfpxuLJveiiZ8Hkxdt4dfE\nNGeHpJRSl8SRNZjewH5jzAFjTDawDCh7D935uQJeIuIKeAPHrP1DgcXW9mKg4JYNA/hY53sB2cDZ\ny7sE5wrw82TJ5N7YXIQJ70ZzIiXT2SEppVSFOTLBBALF5yM4au0rLUJE4kTkCxHpCmCMSQBeBA4D\nx4EUY8wG6/ymxpjj1vYJoGDO+xVAunX+YeBFY0ytn664jb8Piyb15veMbKIWRJNyLufihZRSqgZw\n9l1k24BWxphQ4DVgNYDVrzIUaAu0wF4zGVe6sLHfY11wn3VvIM86vy3wZxEpc5+viNwjIjEiEpOY\nmOiAS6p63QLrM29CTw4kpTFtcQyZOXnODkmpKqHT9V+ey52uv3///nTq1ImwsDDCwsLKDOa8XI5M\nMAlAy2Kvg6x9hYwxZ40xadb2OsBNRPyBm4CDxphEY0wOsAqIsIqdFJHmANZzwZ/IGOBLY0yOMeYU\n8D+gzH3axph5xpiexpieTZo0qaprdbh+7f15+e4wtvx2mlkfbic3r3qm21ZKVV5tmK7//fffL7yR\nofRAzsvlyASzBeggIm1FxB17J/3a4ieISDOxJvIRkd5WPMnYm7j6iIi3dfxGYK9VbC0QZW1HAWus\n7cPADdZ7+QB9gJ8ddG1OcXtoC565PZgNe07y1Jpd5f5aUcrZlixZQmhoKN27d2f8+PEAHDp0iBtu\nuIHQ0FBuvPHGwqnxi3v11VcJDg4mNDSUUaPs9/RER0fTt29fwsPDiYiIYN++fYC9BjJs2DBuvvlm\n2rRpw+uvv85LL71EeHg4ffr0KZyipn///jzwwAOEhYXRrVs3oqOjy3xuYmIikZGR9OrVi169evG/\n//3vgtdXMF1/hw4dCr+8C6bKLzB27FjWrFnD008/zUcffURYWBgfffQRf/nLXxg/fjz9+vVj/Pjx\n5OXl8cgjj9CrVy9CQ0N5++23C9/jhRdeKNz/zDPPlImj+HT9IlImhgLnm66/OjhsHIwxJldE7gPW\nY78LbIExZreIzLCOzwVGADNFJBc4B4yymr1+EpEV2JvQcoHtwDzrrecAH4vIFOA34C5r/xvAQhHZ\nDQiw0BhTNKXqFWJiv7YkpWXz+n/208TXg4cGdnJ2SKqGej76eX4+XbW/sTo36sxjvR877/GC6fo3\nbdqEv79/4Rd9wXT9UVFRLFiwgFmzZpX5MpwzZw4HDx7Ew8OjcMbjgun6XV1d+frrr3niiSdYuXIl\nYJ+uf/v27WRmZtK+fXuef/55tm/fzoMPPsiSJUv405/+BBRN179x40YmT57Mrl27SnxuwXT91157\nLYcPH2bQoEHs3buX84mLi2Pz5s2kp6cTHh7ObbfdxpQpU3j55ZcZNmxY4XT9ixcv5syZM8TExPD6\n668D9ia2PXv28MMPP+Dl5cW8efMKp+vPysqiX79+DBw4sLBGEh0djTGGIUOGsHHjxhKzKV/qdP2j\nR4/myJEjhdP1F6wHExUVhZubG5GRkTz55JNlJvO8HA4daGk1e60rtW9use3XgdfPU/YZoEzaNsYk\nY6/RlN6fhv1W5Svenwd2JDE1i1e/3Y+/nwcT+rZxdkhKATpdf22brv/9998nMDCQ1NRUIiMjWbp0\nKRMmTLjkzzgfHclfC4kIfx/ejeT0bJ5Zu5vGPh7cFtrc2WGpGuZCNY2aSKfrL1Jd0/UXnO/n58eY\nMWOIjo6u0gTj7LvIVCW52lx4fUw4PVs35MGPYtm0P8nZISml0/XXoun6c3NzSUqyf2/k5OTw2Wef\n0a1btwte+6XSGkwt5ulm450JvRj59ibuWbqVZff0oVugTrSnnEen66890/VnZWUxaNAgcnJyyMvL\n46abbmLatGmX+Kd7YTpdfw2arr+yTqRkEvnWJrJy81g5M4LWjX0uXkhdkXS6/pJ0uv7Lp9P113HN\n6nuyeHJvcvMN49+NJjE1y9khKVWn6HT95dMmsitE+wBfFk7sxZj5PzFxYTTL7umDn6ebs8NSyql0\nun7n0iaySjSRxZ+JZ9L6SQT6BhLoG0iQb5B928/+uoVvCzxsHhd/Iwf4z75TTF0cwzVtG7FwUi88\nXG1OiUM5hzaRqap2OU1kWoOpBE+bJ4NaDyIhLYH4M/F8d+Q7cvJLTkIZ4BVAoJ892ZROQk29m+Lq\n4pg/+gGdAvhXZCh/Xr6Dhz7awaujw7G5VN3AKVXzGWOqdLCcqrsutwKiCaYSWtZryVN9nyp8nW/y\nScxIJCEtgYS0BI6mHSUh1b697eQ2vjj4BfmmaO4fV3GlqU9Te9Kxaj2FtSG/IBp7Nr6sL4jIq4NI\nTs/iH+t+prGvO88O6apfOHWEp6cnycnJNG58ef+GlDLGkJycXOHxQeXRBFMFXMSFpj5NaerTlB5N\ne5Q5npOfw4m0ExxNO8qxtGNFSSgtgf8e+S/Jmcklzve0eRbWfAqSTvHX9T0u3ol4z/XtSEzNYv73\nBwnw8+C+GzpU2fWqmisoKIijR49SW2YKVzWbp6dnieloLpUmmGrg5uJGy3otaVmvZbnHz+WeK0o8\nqUcLa0IJaQnEnoolNafkQC0/N79yaz4F/T9ervZpKGYP7kJSWjYvbvgFf18PRvVu5fBrVc7l5uZG\n27ZtnR2GUoAmmBrBy9WLdg3a0a5Bu3KPp2SlFCWd1KLaz4GUA/yQ8ANZeSVvS27s2bgwAbVqH0i3\njByeXL8f43o9I8K64eaid5cppRxP7yKr5QMtjTEkZyaXqfkUJKIT6SfIM0ULlAkuNPNpWlT78St2\nA4JvIE28m+AiOjxKKXV+ehdZHSEi+Hv54+/lT1hAWJnjufm5nMw4yd7EQzz1+UbSck/RvrkLqbmn\n2HRsE4nnSrbVu7u4l+jvKagJFSSh+h71tfNYKVUhmmCucK4uroXJovPYcCLf2sTWGFg5M4Kght5k\n5mZyPP14Ya2n+A0Iu5J3kZKVUuL9fNx8Cvt6itd8CmpC3m7eTrpSpVRNo01ktbyJ7FLtO5HKyLmb\n8PfzYMWMCBr5uF/w/LTstDK3Xhd/nMs9V+L8hh4NS9R8Cms/foE092mOu+3Cn6eUqvkq2kSmCaaO\nJRiA6IOnGf/uT3RuXo8Pp12Dt3vlKrLGGE5nniYhLYFjaccKaz4FiehY+jFy84uty4EQ4B1Q7q3X\nQb5BBHgHYHPRmQeUquk0wVRAXU0wABt2n2DGe1u5rkMT3onqiZut6jv28/LzSDyXWOYGhILXpzJO\nYSj69+fq4kpzn+Zlbr0ueDTybKT9P0rVAJpgKqAuJxiAZdGHeXzVToaHB/L/RnbHpZqnlMnOy7b3\n/xS79bqgBnQs/RinM0+XON/L1atEwindFOfn7let8StVV+ldZOqiRvVuRVJaFi9u+IUmfh48cWv1\nTpLobnOndb3WtK7XutzjGTkZ5dZ8EtISiDkZQ3pOeonz67nXK7fmU5CEnDUBqVJ1lSaYOu7eAe1J\nTM1i3sYD+Pu6c8/15Q/2dAZvN286NOxAh4Zlp7kxxhQOQC3d93O+CUibeDUp99ZrR09AqlRdpf+j\n6jgR4ek7upKUns0/1v2Mv68Hd/ao/NxD1UVEaODZgAaeDejq37XM8XyTT9K5pHKn39l+cnuZCUht\nYqOZT7MyNZ+CJOTv5a/9P0pdIk0wCpuL8NJd3TmTns2jK+Jo6OPOgE4BFy9Yg7mICwHeAQR4BxAe\nEF7meE5+DifST5Q7/mfj0Y1lJiD1sHmUueuteP9PRSYgVaqu0U7+OtzJX1pqZg6j5m3mQGI6H0y7\nhvBWDZ0dktOUnoC0YLsgEaVmn38C0vLWACqYgFSpK4HeRVYBmmDKSkzNYsTcTZw9l8PyGRG0D/B1\ndkg10tnssyUGnhZvhjuWdozMvMwS5zfybFRm5dOCJNTMt5lOQKpqFU0wFaAJpny/JacT+dYmPFxt\nrJwZQbP6lV9wqC660ASkCWkJnEg/Qa4pGoDqIi409S47Aem1gdfS0LPu1iJVzaUJpgI0wZzfroQU\nRs3bTGADLz6e3pf63voLu6rk5udyKuNUuTcgJKQmcOrcKcA+7mdU51FM7DqRRp6NnBy1UkU0wVSA\nJpgL27Q/iYkLt9C9ZX2WTrkGTzedxqU6ZOVlsf/3/SzevZgvD36Jp6snd3e6m6iuUfh7+Ts7PKUq\nnGAcuvCHiNwiIvtEZL+IPF7O8f4ikiIisdbj6WLHHhSR3SKyS0Q+FBFPa38jEflKROKt54bFyoSK\nyI9WuZ0FZVTlRLT356W7uxPz2xnu+2A7uXn5Fy+kLpuHzYOujbvyr+v/xephq7mh1Q0s2bOEwSsH\n88KWF0g6l+TsEJWqEIfVYETEBvwC3AwcBbYAo40xe4qd0x942Bhze6mygcAPQLAx5pyIfAysM8Ys\nEpF/AaeNMXOspNXQGPOYiLgC24DxxpgdItIY+N2YYqttlaI1mIpZvOkQz6zdzd09WzInMkTHgzjB\noZRDzIubx+cHP8fNxY2RHUcyudtkmng3cXZoqg6qCTWY3sB+Y8wBY0w2sAwYegnlXQEvK3F4A8es\n/UOBxdb2YmCYtT0QiDPG7AAwxiRfKLmoiouKaMP9N7Tno5gj/L8Nvzg7nDqpTf02/OO6f7B22FoG\ntRnEhz9/yOBVg5kTPYdTGaecHZ5S5XJkggkEjhR7fdTaV1qEiMSJyBci0hXAGJMAvAgcBo4DKcaY\nDdb5TY0xx63tE0BTa7sjYERkvYhsE5FHq/h66rSHbu7IqF4tef0/+1n0v4PODqfOal2vNX+/9u98\nOuxTBrcdzLKflzF45WD+8dM/OJF+wtnhKVWCsxdf3wa0MsaEAq8BqwGsfpWhQFugBeAjIuNKFzb2\n9r2CNj5X4FpgrPU8XERuLF1GRO4RkRgRiUlMTCx9WJ2HiPC3Yd24Obgpz362h093HLt4IeUwLeu1\n5K/9/sqnwz/l9na3s3zfcm5ddSt/2/w3TTSqxnBkgkkAWhZ7HWTtK2SMOWuMSbO21wFuIuIP3AQc\nNMYkGmNygFVAhFXspIg0B7CeC9oHjgIbjTFJxpgMYB3Qo3RQxph5xpiexpieTZpo+/WlcLW58Nro\ncHq2bsgBP1naAAAgAElEQVRDH8fyQ7x2NjtbS7+WPBvxLJ/d+RlD2g1h5S8rGbxqMH/98a8cTzt+\n8TdQyoEcmWC2AB1EpK2IuAOjgLXFTxCRZmL1GItIbyueZOxNY31ExNs6fiOw1yq2FoiytqOANdb2\neiDEKuMK/AEovKFAVQ1PNxvvTOjFVf6+TF8aw66EFGeHpIBA30D+EvEXPr/zc4a3H86q/au49ZNb\nefbHZ0lIS7j4GyjlAA4dByMitwKvADZggTHm7yIyA8AYM1dE7gNmArnAOeAhY8wmq+yzwN3Wse3A\nVGNMlnV32MdAK+A34C5jzGmrzDhgNvZms3XGmAv2w+hdZJV3IiWTyLc2kZWbx4oZEbTx93F2SKqY\n42nHeXfXu6yKX4UxhqHthzI1ZCpBfjV/pmxV8+lAywrQBHN59p9KY+TcTfh5urFiZl8C/HTYUU1z\nIv0E7+58l5XxKzHGcEe7O5gWOo2Wfi0vXlip89AEUwGaYC7f9sNnGDP/J9r6+/DR9D74eeqUMjXR\nyfSTLNi1gBW/rCDP5HH7VbdzT+g9tKrXytmhqVpIE0wFaIKpGt/tO8XUxTH0atOIRZN74eGqU8rU\nVKcyTrFw10KW/7Kc3PxcbrvqNu4Jvee8y1YrVR5NMBWgCabqrNp2lIc+3sGtIc14bXQPbC462r8m\nS8xIZOHuhSzft5zs/GxubXsr94TeQ9v6bZ0dmqoFNMFUgCaYqjV/4wH+vm4vE/q25tkhXXVKmVog\n6VwSi3Yt4qN9H5Gdn80tbW5heuh0rmpwlbNDUzWYJpgK0ART9f6xbi/zNh7gzzd35P4bOzg7HFVB\nyeeSWbx7Mcv2LSMzN9OeaLpPp12Dds4OTdVAVZZgRKQdcNS6Rbg/EAosMcb8XiWROpEmmKqXn294\nePkOVm1P4J93hjC6t3Yi1yanM0+zePdiPvz5QzJzMxnYZiDTQ6fToaH+WFBFqjLBxAI9gTbYR8ev\nAboaY26tgjidShOMY+Tk5TNtSQwbf0nkrXFXM6hrM2eHpC7RmcwzLNmzhA/2fkBGbgY3t76ZGd1n\n0LFhR2eHpmqAqpxNOd8YkwsMB14zxjwCNL/cANWVy83mwptjexAa1ID7P9zOTweSnR2SukQNPRvy\nQI8HWB+5nmkh09h0bBORayN58D8Psu/0PmeHp2qJiiSYHBEZjX1als+sfTrYQV2Qt7srCyf2omVD\nL6YuieHnE2edHZKqhAaeDZjVYxbrI9czPXQ6m49vZsSnI3jg2wfYm7z34m+g6rSKJJhJQF/g78aY\ngyLSFljq2LDUlaChjztLplyDj7srE96N5sjpDGeHpCqpvkd97gu/jy8jv2Rm95lsObGFuz67i/u/\nvZ/dybudHZ6qoS7pLjJrGv2Wxpg4x4VUfbQPpnrsO5HKyLmb8Pf1YMXMCBr5uDs7JHWZzmaf5f29\n77N0z1JSs1P5Q9AfmNl9Jl39uzo7NFUNqrKT/ztgCPb1VrZinx7/f8aYh6ogTqfSBFN9thw6zbh3\nfqJz83p8MPUafDxcnR2SqgKp2al8sPcDluxZwtnss1wXeB0zu88kpEmIs0NTDlSVnfz1jTFngTux\n3558Dfb1WpSqsF5tGvH6mB7sPPo7M9/fRk5evrNDUlXAz92P6d2nsz5yPbPCZxGXFMeYdWOY8fUM\ndiTucHZ4yskqkmBcrYW97qKok1+pS3ZzcFP+eWcIG39J5NEVceTn191BvlcaX3dfpoVOY33keh7o\n8QC7k3Yzbt04pn81ndhTsc4OTzlJRRLMc9gX8/rVGLNFRK4C4h0blrpS3d2rFY8M6sQn2xP45xd6\nF9KVxsfNh6khU1kfuZ4Hr36Qvcl7Gf/FeKZtmMa2k9ucHZ6qZjpVjPbBVDtjDM9+uodFmw7xxK2d\nued6nY7kSpWRk8HH+z5m4e6FnM48zTXNrmFG9xn0bHbR5ntVg1VZH4yIBInIJyJyynqsFBFdFk9V\nmojw9O3B3BbanH+s+5mVW486OyTlIN5u3kzsNpEvI7/k4Z4Ps//3/UxaP4nJ6yez5cQWZ4enHKwi\nTWQLgbVAC+vxqbVPqUpzcRFeuqs7/do35tGVcXz780lnh6QcyMvVi6iuUXwR+QWP9HyEgykHmbx+\nMpO+nET08WjqckvKlaxCc5EZY8Iutq820iYy50vNzGH0/M3sP5XGB9P60KNVQ2eHpKpBZm4mK35Z\nwYJdC0g8l0iPgB7MDJvJNc2u0WUeaoGqvE05WUTGiYjNeowDdHIpVSX8PN1YOLE3Tet5MnnRFvaf\nSnV2SKoaeLp6Mi54HF9EfsHjvR/naOpRpm2YRtSXUWw6tklrNFeIitRgWgOvYZ8uxgCbgPuNMUcc\nH55jaQ2m5vgtOZ3It37E3Sas/GMEzet7OTskVY2y8rJYFb+Kd3e+y8mMk3Rv0p2Z3WcS0SJCazQ1\nkEMXHBORPxljXqlUZDWIJpiaZVdCCqPmbaZ5fU+Wz+hLA2+dUqauyc7L5pP4T3hn1zucSD9BqH8o\nM7rP4NrAazXR1CCOTjCHjTG1fiUpTTA1z6b9SUxcuIXQoPosnXINXu42Z4eknCA7L5vV+1fzzs53\nOJ5+nG6NuzEzbCbXBV6niaYGqMo+mHLfv5LllLqgiPb+vHx3GFsPn+H+D7eRq1PK1EnuNnfu6nQX\nnw//nGf6PsOZrDPc+829jP58NN8d+U77aGqJyiYY/dtVDnNbaHOeG9KVr/ee4olPduqXSR3mZnNj\nRMcRfDr8U56NeJbfs37n/m/v5+7P7ubbw9/qv40a7rxNZCKSSvmJRAAvY0ytnw5Xm8hqtpc27OPV\nb/dz74B2PDKos7PDUTVATn4On/36GfN3zudI6hE6N+rMjNAZDGg1ABep7O9ldakc2gdzpdAEU7MZ\nY3jik518GH2EZ+4IZlK/ts4OSdUQufm5fH7gc+bFzeNw6mE6NuzIjO4zuLHVjZpoqoEmmArQBFPz\n5ebl88f3t/HV3pP8e1Q4Q7q3cHZIqgbJzc/li4NfMC9uHofOHqJ9g/bM6D6Dm1vfrInGgRzdyV/R\nIG4RkX0isl9EHi/neH8RSRGRWOvxdLFjD4rIbhHZJSIfiointb+RiHwlIvHWc8NS79lKRNJE5GFH\nXpuqHq42F14dHU6v1o3488ex/BCf5OyQVA3i6uLKHe3uYPXQ1fzzun+Sm5/Lw/99mMi1kXx58Evy\n8vOcHWKd5rAEIyI24A1gMBAMjBaR4HJO/d4YE2Y9nrPKBgKzgJ7GmG6ADRhlnf848I0xpgPwjfW6\nuJeAL6r8gpTTeLrZmB/Vk3ZNfJm+NIadR1OcHZKqYWwuNm6/6nZWD13N89c9T77J55GNj3Dn2jtZ\nd2CdJhoncWQNpjew3xhzwBiTDSwDhl5CeVfAS0RcAW/gmLV/KLDY2l4MDCsoICLDgIPA7suMXdUw\n9b3cWDy5Nw283Zm4MJqDSenODknVQDYXG7dedSurhqzihetfwEVceOz7xxi+djifHfhME001q8h0\n/akicrbU44g1hf9VFygaCBSfTuaota+0CBGJE5EvRKQrgDEmAXgROAwcB1KMMRus85saY45b2yeA\nplacvsBjwLMXuyZVOzWt58mSKb3JN4YJC37iVGqms0NSNZTNxcYtbW9h5ZCVvPiHF7GJjdnfz2bY\nmmF8+uun5ObnOjvEOqEiNZhXgEewJ4cg4GHgA+w1kgWX+fnbgFbGmFDs852tBrD6VYYCbbEvEeBj\nTbJZgrHfoVBwl8JfgJeNMWkX+kARuUdEYkQkJjEx8TLDV9WtXRNfFk7qTVJqNlELtnA2M8fZIaka\nzEVcGNRmECuHrOSl/i/hbnPniR+eYOjqoazZv0YTjYNVJMEMMca8bYxJNcacNcbMAwYZYz4CLjS3\negLQstjrIGtfIev90qztdYCbiPgDNwEHjTGJxpgcYBUQYRU7KSLNAaznU9b+a4B/icgh4E/AEyJy\nX+mgjDHzjDE9jTE9mzRpUoHLVzVNWMsGvDWuB/EnU7lnSQyZOdrsoS7MRVy4ufXNLL9jOa/0fwVv\nN2+e/N+TDFk9hE/iPyEnX3+oOEJFEkyGiNwlIi7W4y6goG3iQvc4bwE6iEhbEXHH3km/tvgJItJM\nrImFRKS3FU8y9qaxPiLibR2/EShYwH0tEGVtRwFrAIwx1xlj2hhj2mCvdf3DGPN6Ba5P1UL9OwXw\nwshQNh84zUMfx5KXX3dvt1cV5yIu3Nj6Rj6+/WP+PeDf+Lr58vSmpxnyyRBWxa/SRFPFKpJgxgLj\nsdcUTlnb40TECyhTQyhgjMm1jq/Hnhw+NsbsFpEZIjLDOm0EsEtEdgCvAqOM3U/ACuxNaDutOOdZ\nZeYAN4tIPPaazpxLuWB15RgeHsSTt3Vh3c4T/GXtbp02RFWYiHBDqxv46PaPeO2G16jnUY9nNj3D\nHZ/cwYpfVpCTp4mmKuhASx1oWev9c91e3t54gIdu7sisGzs4OxxVCxlj+D7he96KfYtdybto4dOC\nKSFTGN5+OG42N2eHV+NU2UBLEQmy7hg7ZT1WikhQ1YSp1OV77JbO3NkjkJe++oUPfjrs7HBULSQi\nXB90PR/c9gFv3vgm/l7+/HXzX7n1k1v56OePyM7LdnaItVJFmsgWYu/3aGE9PrX2KVUjuLgIz0eG\n0r9TE55cvZMvd51wdkiqlhIRrgu6jvdufY+5N82lqXdT/vbT37h11a18+POHZOVlOTvEWqUiSybH\nGmPCLravNtImsitLRnYuY+b/xJ7jZ1k6uTfXXNXY2SGpWs4Yw4/Hf2TujrlsP7WdAO8AJnebzIiO\nI/CweTg7PKepyrnIkkVknIjYrMc47Hd6KVWjeLu7snBiL1o29GLqkhj2Hj/r7JBULSciRLSIYPEt\ni5k/cD5BvkHMiZ7D4JWDeW/Pe2Tm6mDfC6lIDaY19kGQfbHflrwJuN8Yc+SCBWsBrcFcmRJ+P0fk\nm5vIN4aVMyNo2cjb2SGpK4Qxhi0ntvDWjreIORmDv5c/k7pOYmSnkXi5ejk7vGrj0On6ReRPxphX\nKhVZDaIJ5sr1y8lURry1CX9fD5bP6Etj37rbnKEcY8uJLczdMZfoE9E09mzMpG6TGNlxJN5uV/4P\nGkcnmMPGmFaViqwG0QRzZYs5dJqx7/xEp2Z+fDitDz4etX4RVlUDbT25lbd2vMVPx3+ikWcjJnad\nyN2d7r6iE42j14ORSpZTqtr0bNOIN8b0YPexs8x4byvZufnODkldga5uejXvDHyHJYOX0KlhJ17a\n+hK3rLyFd3e+S0ZOhrPDc6rKJpi6OzpT1So3BTfln8ND+D4+iUdW7CBfp5RRDhIeEM68gfNYOngp\nwY2DeWXbKwxaOYh3dr5Dek7dXF7ivE1kIpJK+YlEAC9jTK1vb9Amsrrjjf/s54X1+5jcry1P3d4F\nawo8pRxmR+IO5u6Yyw8JP1Dfoz4TgicwpvMYfN19nR3aZXNoH8yVQhNM3WGM4dlP97Bo0yEeH9yZ\nGX9o5+yQVB2xM3Enc+PmsvHoRuq512N88HjGdhmLn7ufs0OrNE0wFaAJpm7JzzfMWradz+KO88KI\nUEb2bHnxQkpVkd1Ju5m7Yy7fHf0OP3c/xncZz9jgsdRzr+fs0C6ZJpgK0ART92Tl5jFlUQw/Hkhm\n/oSruaFzU2eHpOqYPcl7mLtjLv858h/83PwYFzyOsV3GUt+jvrNDqzBNMBWgCaZuSsvKZfS8zcSf\nSuX9qX24uvWF1s1TyjF+Pv0zc3fM5ZvD3+Dr5svYLmMZHzy+ViQaTTAVoAmm7kpKy2LEW5s4k5HD\nihl96dC09raHq9pt3+l9vB33Nl/99hU+bj6M6TyGCcETaODZwNmhnZcmmArQBFO3HU7O4M63NuFm\nE1bOjKBFg7oz1YeqeX458wtv77AnGi9XL8Z0sSeahp41r4atCaYCNMGo3cdSuPvtzTSv78nyGX1p\n4O3u7JBUHbf/zH7ejnub9YfW4+nqyejOo4nqGkUjz0bODq2QJpgK0ASjADb9msTEBVsICarPe1Ou\nwcvd5uyQlOLX33/l7bi3+fLgl3i6ejKq0yiiukbR2Mv5y1BogqkATTCqwLqdx7n3g23c0CmAt8df\njautspNcKFW1DqQcYF7cPL44+AUeNg/u6ngXE7tNxN/L32kxaYKpAE0wqrilm3/jqdW7GHl1EP8a\nEaqj/VWNcjDlIPPj5vP5wc9xd3FnZKeRTO422SmJRhNMBWiCUaW99NUvvPpNPH/s345Hb+ns7HCU\nKuO3s78xL24enx/4HFcXV0Z2tCeaJt5Nqi0GTTAVoAlGlWaM4YlPdvFh9GGevj2Yyde2dXZISpXr\n8NnDzN85n09//RSb2BjRcQSTu02mqY/jBw9rgqkATTCqPHn5hj++v5X1u0/y6uhwhnRv4eyQlDqv\nI6lHeGfnO6zdvxYXceHODncyJWQKzXyaOewzNcFUgCYYdT6ZOXlMWBDN9sNnWDCxF9d1qL7mB6Uq\n42jqUd7Z+Q5r9q9BRLizw51MDZnqkESjCaYCNMGoC0k5l8Pdb//IkdMZfHhPH0KDau7IaqUKHEs7\nxjs73+GT/Z8AMLz9cKaGTKWFb9XVxDXBVIAmGHUxJ89mcuebm8jMyWPFzAja+vs4OySlKuR42nHe\n3fUuq+JXYTAMbTeUaaHTCPQNvOz31gRTAZpgVEUcSExjxNwf8fGwsXJGBAH1PJ0dklIVdiL9BO/u\nfJeV8SsxxjCk/RCmhkylpV/ll6vQBFMBmmBURcUe+Z0x8zfTurEPH03vQz1PN2eHpNQlOZl+kgW7\nFrDilxXkmTwmBE/goZ4PVeq9KppgdLiyUhUQ1rIBb427mviTqdyzJIbMnDxnh6TUJWnq05TZ18zm\ni8gvGN15dLXczuzQBCMit4jIPhHZLyKPl3O8v4ikiEis9Xi62LEHRWS3iOwSkQ9FxNPa30hEvhKR\neOu5obX/ZhHZKiI7recbHHltqu75Q8cmvDiyO5sPnObBj2LJy6+7tX9VewV4B/BY78cY22Wswz/L\nYQlGRGzAG8BgIBgYLSLB5Zz6vTEmzHo8Z5UNBGYBPY0x3QAbMMo6/3HgG2NMB+Ab6zVAEnCHMSYE\niAKWOujSVB02LDyQJ2/rwhe7TvD0ml3U5SZmpS7G1YHv3RvYb4w5ACAiy4ChwJ4KlncFvEQkB/AG\njln7hwL9re3FwHfAY8aY7cXK7rbKehhjsi7nIpQqbep1V5GYlsXb/z1AEz8P/nRTR2eHpFSN5Mgm\nskDgSLHXR619pUWISJyIfCEiXQGMMQnAi8Bh4DiQYozZYJ3f1Bhz3No+AZTXkBgJbCsvuYjIPSIS\nIyIxiYmJlbowpR6/pTORPYJ45et43tv8m7PDUapGcnYn/zaglTEmFHgNWA1g9asMBdoCLQAfERlX\nurCxt0+UaKOwktTzwPTyPtAYM88Y09MY07NJEx2drSpHRJgTGcKATk14as0uvth5/OKFlKpjHJlg\nEoDiN1oHWfsKGWPOGmPSrO11gJuI+AM3AQeNMYnGmBxgFRBhFTspIs0BrOdTBe8nIkHAJ8AEY8yv\njrkspezcbC68MbYHYS0b8MCyWH78NdnZISlVozgywWwBOohIWxFxx95Jv7b4CSLSTKxFN0SktxVP\nMvamsT4i4m0dvxHYaxVbi70TH+t5jVW+AfA58Lgx5n8OvC6lCnm7u7IgqhctG3lxz5IY9hw76+yQ\nlKoxHJZgjDG5wH3AeuzJ4WNjzG4RmSEiM6zTRgC7RGQH8Cowytj9BKzA3oS204pznlVmDnCziMRj\nr+nMsfbfB7QHni5223OAo65PqQINfdxZMuUafDxciVoYzZHTGc4OSakaQUfy60h+VUV+OZnKiLc2\n0cjHnRUzI/D39XB2SEo5hI7kV6qadWzqx4KJvTieksnkRVtIy8p1dkhKOZUmGKWqUM82jXhjTA92\nHzvLzPe2kp2b7+yQlHIaTTBKVbGbgpvyzztD+D4+iYeX7yBfp5RRdZQjR/IrVWfd1bMlSWlZ/OvL\nfTT2defp24OxbphUqs7QBKOUg8z8QzsSU7NY+L9DBPh5MrN/O2eHpFS10gSjlIOICE/dFkxyWjbP\nf/kzjX3duatn5Rd5Uqq20QSjlAO5uAgvjuzO6fRsZq/aSWMfd27s4vh1OJSqCbSTXykHc3d1Ye74\nqwluXo97P9jG1t9OOzskpaqFJhilqoGvhysLJ/WiWT1PJi+KIf5kqrNDUsrhNMEoVU38fT1YOuUa\n3F1dmLAgmmO/n3N2SEo5lCYYpapRy0beLJrUi7TMXCYsiOb3jGxnh6TqmPx8Q1pWLmczcxz+WdrJ\nr1Q169qiPvMm9CRqQTSTF23h/al98HK3OTssVUPl5OWTnpVLenae/Tkrl/SsPNKycsnIzi11zHou\ns79oOyM7D4Ah3Vvw6uhwh8auCUYpJ+jbrjH/HhXGHz/Yxr0fbOPt8VfjZtMGhdrOGENmTj5phV/q\n1pe+9YWfUSwxpGXlWc/2/enFtouSRx7ZeRWbbkgEfN1d8faw4ePhio+7Kz4eNprX98Tb3dXaZx3z\nsNGxqZ+D/zQ0wSjlNINDmvPXod14cvUuZq/ayQsjQnW0fzXLzcsnPTuvqCZQWAMoVRMoUTPIO2/y\nSM/OpaIzA7nbXPDxsOHt7oqvhz0x+Hq40tTPs3DbfqzkOT4e1rZ78XNc8XRzqXH/fjTBKOVE4/q0\nJjE1i39/E08TPw8eu6Wzs0OqsYwxZOXmFzbzlKgJZFm//q39FzunIEFk5lR8MlLvgl//hbUAV/x9\n3Wnt4W3VFuw1g+LnFHz5F+63jnm7u+LueuXXWDXBKOVkf7qpA4lpWbz13a/4+3ow5dq2zg6pSuTn\nGzJySvYblNs3UHx/idqD1WdQLDHkVrB6YHMRfAp+4Vtf7L4eNhr6eJf59V/6y79MDcHDFW83Gy4u\nNat2UBtoglHKyUSEvw7txum0bP762R78fd0ZGhZY7XFk5+YX9QkU/PrPKl4jKNtvkJZtTwDFk0TB\nOQWdyRXh6eZSrBZg/6Jv4OVGYAPPErWDwqYi68u/ZK3B1ao12PBwrXnNRXWRJhilagCbi/DKqDAm\nLIjm4eU7aOjtzvUdm5z3fGMM53LyCvsDSjf9XKg/oXgzUkFiyLiEzmQXAR/3sv0B5+tMLv7l7+Nh\nK9Oc5O1mw1VvcKh+eTlgc3PoR+iSybpksqpBUs7lcPfbP3L4dAY3dmlabr9BQVKo6H/d0p3Jxb/0\nz9eZ7ONR/FjN70xWF5F6Eo7vgOOxcCzW/tzuBhj6eqXerqJLJmsNRqkapL6XG0sm9+beD7ax8+jv\nJTuTG5+/M7n4bal1sTNZWYyB1OP2ZHIstiippB4vOqdxe2jVF9pe7/BwNMEoVcME1PNk+YwIZ4eh\najpj4GxCUY2kIKmkn7JOEPDvaE8kzbtD8zBoFgKe9aotRE0wSilV0xkDvx8umUiO74CMJPtxcYEm\nnaH9jfZE0iIMmnYDD1+nhq0JRimlahJj4MzBYonESibnztiPiw0CukDHW+yJpHl3ezJx93Zu3OXQ\nBKOUUs6Sn29PJse2FyWS4zsgM8V+3MXNnky63GGvmTQPg6Zdwc3TuXFXkCYYpZSqDvn5kLy/ZDPX\niTjIOms/bnO3J4+ud9prJS3CICAYXD2cG/dl0ASjlFJVLT8Pkn4p2cx1Yidkp9mPu3ram7VCRlrN\nXGH2PhRXd+fGXcU0wSil1OXIy4XEn4tuCT6+w55McjLsx1297HdvhY2xmrm6Q5NODh/kWBNoglFK\nqYrKy4FTe4sNWNwBJ3dBbqb9uJsPNA+FHlFFzVz+HcGlbq7349AEIyK3AP8GbMA7xpg5pY73B9YA\nB61dq4wxz1nHHgSmAgbYCUwyxmSKSCPgI6ANcAi4yxhzxiozG5gC5AGzjDHrHXl9SqkrWG4WnNpT\ncsDiyd2QZ61C6u5nTyK9phaNM2ncrs4mk/I4LMGIiA14A7gZOApsEZG1xpg9pU793hhze6mygcAs\nINgYc05EPgZGAYuAx4FvjDFzRORx6/VjIhJsndMVaAF8LSIdjTEVn3FPKVU35WTak8fx2KLayam9\nkG8tK+xZ355ErplujTMJh4ZtwUVnSbgQR9ZgegP7jTEHAERkGTAUKJ1gzscV8BKRHMAbOGbtHwr0\nt7YXA98Bj1n7lxljsoCDIrLfiuHHy74SpdSVIzujKJkU1E4S90J+rv24ZwN701bfe4vGmTRsa18y\nUl0SRyaYQOBIsddHgWvKOS9CROKABOBhY8xuY0yCiLwIHAbOARuMMRus85saYwom1jkBNC32eZtL\nfV71z3mulKo5stPtHe7Fm7kS90FBw4Z3Y3uNpOPAomauBq00mVQRZ3fybwNaGWPSRORWYDXQQUQa\nYq+RtAV+B5aLyDhjzHvFCxtjjIhc0nTQInIPcA9Aq1atquIalFI1QVYqHI8rOWtw0i/Yu3EBnwB7\njaTzbUXTqdQL1GTiQI5MMAlAy2Kvg6x9hYwxZ4ttrxORN0XEHxgAHDTGJAKIyCogAngPOCkizY0x\nx0WkOVAws9tFP8/6nHnAPLBP1395l6iUcorMlKJR7wW1k+T9FCYTv+b2JNJ1eFEzl19zTSbVzJEJ\nZgv22khb7F/0o4AxxU8QkWbASasm0htwAZKxN431ERFv7E1kNwIFC7esBaKAOdbzmmL7PxCRl7B3\n8ncAoh13eUqpanHuTNl5uU4fKDpeL8ieQELvKhpn4tf0/O+nqo3DEowxJldE7gPWY79NeYExZreI\nzLCOzwVGADNFJBd7Ihll7Cug/SQiK7A3oeUC27FqHdgTy8ciMgX4DbjLer/d1t1me6wy9+odZErV\nMhmnS87LdSwWfv+t6Hj9VtCiO4SNLUomvudf+VM5l65oqStaKuUcaYklbws+vgNSit0X1LBNURIp\nmE7Fu5HTwlVFdEVLpVTNkXqibDPX2WJdpI3aQVAv6D3NSiqh4NXQefGqKqEJRilVdQqW7C29ymLa\nCfgcpTcAAAoISURBVOsEAf8O0DqiqHbSPNQ+kFFdcTTBKKUqxxhIOVpqlcVYSE+0HxcX+zxcV/Uv\nauZqFgIefs6MWlUjTTBKqYszxt7ZXrqZKyPZflxs9unmOxQbsNisG7j7ODdu5VSaYJRSJRUs2Vs8\nkRRfstfF1b7KYqfBRfNyNe0Kbl7OjVvVOJpgKuPkbvhglP0/lLs3uHnbt928im37lLPPu5wyxZ+9\n7QsR6QR6qrrk59vHlByPtW4P3mEfDZ9VbMnepsHQZUjRgMWA2rNkr3IuTTCV4eYFbfrZFxTKOWd/\nZJy2tovty0kHk3/p7+9aOjF52ZsaSu8rSErlJjhvK5GVk+DcvHVK8booP88+2r34vFzH4yA71X7c\n5mGviYREFjVzBQRfcassquqjCaYyGl0Fw+de/Dxj7GtHlEg6GUXP2RnnP1Zi23rOSoXUk2XLFEwp\nfilsHhWoXVW0RnaeY3Vgxb4aKy+3aMnewmauOPuPHrDXlJuFQPe7i+blatJZ/85UldIE40gi4Oph\nfzjynv68nHIS02Uks4xk+3PxMnlZlx6Xi9t5klUlamTnO9/mrvNL5eXYZwguPmDxxE7IPWc/7uYN\nzUIhfFxRM5d/J7Dpf3/lWPov7Epgc7M/POs57jPy80olp4sls9JJrFQySz1esmx2RtEX4qUQ2/mb\nCM/b31W8RlaBZObqWXOSWG62fe2S0qssFizZ6+5rTyY9JxWNM/HvoE2iyik0waiKcbGBh6/94Sj5\n+fYvynKT0qUms3P/v717jZWrKsM4/n/oBXqhFyialpK2ogEq0lKxgig21EREIkaJGG3QJmhqjEFN\nNaJGJZgoQYkfSPBCFSKKMbWgQiJNSknRGGm1V9uCvdGWoi1RCwK2pX39sNah45y2Z2b2WTNzep5f\nMjkze++1533Pnjnv2Wv2rAUvPQf765YdfJFXR9xtmOrOsFo9I6tbV1v8ho7ofXHHKwfyxFg1w8/v\n3Xh0yt5Tx9RM2Zu7uc441xeJWNdwgbHuccop6Y/u8JHAmWWeIyL94W7ms68TFbP/7s9nY3VFrJVx\nVoeedvTsasiw9CXG/5uydya8dcHRcbk8Za91ORcYG1ykdIlt6ctsDx9q7UKO2p9vfP/Rbq7xU7un\nm86sQS4wZiUMGQZDxnqMLRvUfH5tZmZFuMCYmVkRLjBmZlaEC4yZmRXhAmNmZkW4wJiZWREuMGZm\nVoQLjJmZFaGIZsdlOnlI2gc8XWEXE4Dn+imcgWCw5QvOebBwzs2ZEhFn9bXRoC4wVUlaFRGXdDqO\ndhls+YJzHiyccxnuIjMzsyJcYMzMrAgXmGp+2OkA2myw5QvOebBwzgX4MxgzMyvCZzBmZlaEC8wx\nSLpK0pOStkj60jHWj5X0W0lrJf1V0vxG23arVnOWdI6k5ZI25uU3tT/61lQ5znn9EEmrJT3Uvqir\nqfjaHidpsaTNkjZJuqy90TevYr6fy8s2SLpfUuFZ6vpHAzmPl/SApHWSnpB0YaNtmxYRvtXcgCHA\nVuB1wHBgLTC9bpsvA7fl+2cB/8zb9tm2G28Vc54IzMrLTweeOtlzrln/eeDnwEOdzqcdOQP3Ajfm\n+8OBcZ3OqVS+wNnAdmBEXvdL4OOdzqmfcr4d+Hq+fz6wrNG2zd58BtPbbGBLRGyLiIPAL4Br67YJ\n4HRJAkaTXpSvNNi2G7Wcc0Q8GxF/AYiIF4BNpDdnt6tynJE0GXgvcHf7Qq6s5ZwljQWuABYBRMTB\niPh3+0JvSaVjTJrxd4SkocBIYE97wq6kkZynA48CRMRmYKqk1zbYtikuML2dDeyqebyb3n8w7wQu\nIL3g1gM3RcSRBtt2oyo5v0rSVOBi4E+lAu1HVXP+HvBF4AgDR5WcpwH7gJ/kbsG7JY1qQ8xVtJxv\nRDwDfAfYCTwL7I+IpeVDrqyRnNcCHwCQNBuYAkxusG1TXGBa825gDTAJmAncKWlMZ0Mq7oQ5SxoN\n/Ar4bEQ835kQ+90xc5Z0DbA3Iv7c0ejKON5xHgrMAu6KiIuBF4EB8xnjCRzvGI8n/fc+La8bJWle\n58LsV98GxklaA3wGWA0cLvFELjC9PQOcU/N4cl5Waz6wJJItpL7a8xts242q5IykYaTi8rOIWNKG\nePtDlZwvB94naQepG+FKSfeVD7myKjnvBnZHRM/Z6WJSwelmVfJ9F7A9IvZFxCFgCfC2NsRcVZ85\nR8TzETE/ImYCN5A+e9rWSNtmucD0thJ4g6RpkoYDHwZ+U7fNTmAuQO67PI90gBpp241azjn3XS8C\nNkXEHW2MuaqWc46ImyNickRMze0ejYiB8N9tlZz/DuySdF7ebi6wsT1ht6zKe3kncKmkkfk1Ppf0\n+WK36zPnfDXg8PzwRmBF7nXo/79fnb7qoRtvwNWkq6G2Al/JyxYAC/L9ScBSUp/tBmDeidoOhFur\nOQNvJ31Quo7U1bAGuLrT+ZQ+zjX7mMMAuYqsas6kLqRV+Vg/CIzvdD6F870F2JyX/xQ4tdP59FPO\nl+X1T5LOzMafqG2Vm7/Jb2ZmRbiLzMzMinCBMTOzIlxgzMysCBcYMzMrwgXGzMyKcIExK0TSNyQt\n7II4dkia0Ok4bPBxgTEzsyJcYMyaIGmUpIfz/CEbJF1fe4Yg6RJJj9U0mSHpj5L+JukTeZuJklZI\nWpP38Y68/C5Jq/IcJLfUPOcOSd/K26+SNEvSI5K2SlqQt5mT9/lwns/j+5J6vb8lzctzgKyR9ANJ\nQ0r+vmxwc4Exa85VwJ6ImBERFwK/62P7i4ArSd+e/pqkScBHgEcijQU1gzT6AaRvTl+S27xT0kU1\n+9mZt38cuAe4DriU9G3zHrNJgxdOB84lj5jbQ9IFwPXA5Xlfh4GPNpG7WVOGdjoAswFmPfBdSbeR\nhoh5PA1VdVy/joiXgZclLScVgZXAj/MgoQ9GRE+B+ZCkT5LelxNJhWJdXtczJtR6YHSkuXdekHRA\n0ri87omI2AYg6X7SMD6La2KZC7wZWJljHgHsbem3YNYAFxizJkTEU5JmkcZs+qakZaQJqnp6A+qn\n1a0fiykiYoWkK0gTlt0j6Q7SmclC4C0R8S9J99Tt60D+eaTmfs/jnvdxr+eqeyzg3oi4uY80zfqF\nu8jMmpC7uF6KiPtIU8/OAnaQzgwAPljX5FpJp0k6kzQw5kpJU4B/RMSPSDNizgLGkOZY2Z9H9X1P\nC+HNziPhnkLqCvt93fplwHWSXpNzOSPHYlaEz2DMmvMm4HZJR4BDwKdIXU2LJN0KPFa3/TpgOTAB\nuDUi9kj6GPAFSYeA/wA3RMR2SatJo/fuAv7QQmwrSTM0vj4/5wO1KyNio6SvAktzEToEfBp4uoXn\nMuuTR1M2OwlImgMsjIhrOh2LWQ93kZmZWRE+gzEzsyJ8BmNmZkW4wJiZWREuMGZmVoQLjJmZFeEC\nY2ZmRbjAmJlZEf8DOHs3IqNwi90AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x138000f8320>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "subsample = [0.8, 0.85, 0.9]\n",
    "colsample_bytree = [0.85, 0.9, 0.95]\n",
    "param4_2 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "\n",
    "gs4_2 = GridSearchCV(xgb4, param_grid = param4_2, scoring='neg_log_loss', cv=kfold)\n",
    "gs4_2.fit(X_train , y_train)\n",
    "\n",
    "print(\"Best parameters:\", gs4_2.best_params_)\n",
    "print('Best cv_logloss:', -gs4_2.best_score_)\n",
    "\n",
    "# 可视化\n",
    "cv_scores = gs4_2.cv_results_['mean_test_score'].reshape(len(colsample_bytree), len(subsample))\n",
    "fig = plt.figure()\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    plt.plot(subsample, -cv_scores[i,:], label='colsample_bytree '+ str(value))\n",
    "plt.xlabel('subsample')\n",
    "plt.ylabel('Log Loss')\n",
    "plt.legend(loc='upper right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.5 调整正则化参数：reg_alpha & reg_lambda"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best parameters: {'reg_alpha': 1, 'reg_lambda': 0.1}\n",
      "Best cv_logloss: 0.579373350778\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1383a4ea908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xgb5 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=335,    #第三轮调整得到的n_estimators最优值\n",
    "        max_depth=5,            # 第二轮调整得到的max_depth最优值\n",
    "        min_child_weight=5,     # 第二轮调整得到的min_child_weight最优值    \n",
    "        gamma=0,\n",
    "        subsample=0.85,          # 第四轮调整得到的subsample最优值\n",
    "        colsample_bytree=0.9,     # 第四轮调整得到的colsample_bytree最优值\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "reg_alpha = [0.1, 1, 2]            #default = 0, 测试0.1, 1，2\n",
    "reg_lambda = [0.1, 0.5, 1, 2]      #default = 1，测试0.1, 0.5，1，2\n",
    "param5 = dict(reg_alpha=reg_alpha, reg_lambda=reg_lambda)\n",
    "\n",
    "gs5 = GridSearchCV(xgb5, param_grid = param5, scoring='neg_log_loss', cv=kfold)\n",
    "gs5.fit(X_train , y_train)\n",
    "\n",
    "print(\"Best parameters:\", gs5.best_params_)\n",
    "print('Best cv_logloss:', -gs5.best_score_)\n",
    "\n",
    "# 可视化\n",
    "cv_scores = gs5.cv_results_['mean_test_score'].reshape(len(reg_alpha), len(reg_lambda))\n",
    "fig = plt.figure()\n",
    "for i, value in enumerate(reg_alpha):\n",
    "    plt.plot(reg_lambda, -cv_scores[i,:],label='reg_alpha '+ str(value))\n",
    "plt.xlabel('reg_lambda')\n",
    "plt.ylabel('Log Loss')\n",
    "plt.legend(loc='upper right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到，reg_lambda在取值范围的边界处得到最好效果。其实还可以进一步减小reg_lambda试一下，这里就不继续调整了。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.6 降低学习率，再次调整 n_estimator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best n_estimators: 1881\n",
      "Best cv_logloss: 0.581849333333\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x13805d02320>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xgb6 = XGBClassifier(\n",
    "        learning_rate =0.02,\n",
    "        n_estimators=2000,\n",
    "        max_depth=5,            # 第二轮调整得到的max_depth最优值\n",
    "        min_child_weight=5,     # 第二轮调整得到的min_child_weight最优值    \n",
    "        gamma=0,\n",
    "        subsample=0.85,          # 第四轮调整得到的subsample最优值\n",
    "        colsample_bytree=0.9,     # 第四轮调整得到的colsample_bytree最优值\n",
    "        colsample_bylevel = 0.7,\n",
    "        reg_alpha=1,              # 第五轮调整得到的reg_alpha最优值\n",
    "        reg_lambda=0.1,           # 第五轮调整得到的reg_lambda最优值\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "cv_result = best_n_estimators(xgb6, dtrain, kfold)\n",
    "n_estimators_6 = cv_result.shape[0]\n",
    "cv_logloss_6 = cv_result['test-mlogloss-mean'][n_estimators_6 - 1]\n",
    "print(\"Best n_estimators:\", n_estimators_6)\n",
    "print('Best cv_logloss:',cv_logloss_6)\n",
    "n_estimators_plot(cv_result)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.7 采用最佳参数重新训练模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Log Loss: 0.484\n",
      "Train Accuracy: 0.802\n"
     ]
    }
   ],
   "source": [
    "xgb = XGBClassifier(\n",
    "        learning_rate =0.02,\n",
    "        n_estimators=1881,        # 第六轮调整得到的n_estimators最优值\n",
    "        max_depth=5,              # 第二轮调整得到的max_depth最优值\n",
    "        min_child_weight=5,       # 第二轮调整得到的min_child_weight最优值    \n",
    "        gamma=0,\n",
    "        subsample=0.85,           # 第四轮调整得到的subsample最优值\n",
    "        colsample_bytree=0.9,     # 第四轮调整得到的colsample_bytree最优值\n",
    "        colsample_bylevel = 0.7,\n",
    "        reg_alpha=1,               # 第五轮调整得到的reg_alpha最优值\n",
    "        reg_lambda=0.1,              # 第五轮调整得到的reg_lambda最优值\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "xgb.fit(X_train, y_train)\n",
    "\n",
    "print('Train Log Loss: %.3f' % log_loss(y_train, xgb.predict_proba(X_train)))\n",
    "print('Train Accuracy: %.3f' % accuracy_score(y_train, xgb.predict(X_train)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. 测试并生成结果文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# 用测试集进行测试\n",
    "test = pd.read_csv('RentListingInquries_FE_test.csv')\n",
    "X_test = test.values\n",
    "\n",
    "y_test_pred = xgb.predict(X_test)\n",
    "y_test_proba = xgb.predict_proba(X_test)\n",
    "\n",
    "# 生成结果文件\n",
    "df = pd.DataFrame({'interest_level': y_test_pred, 'proba_high': y_test_proba[:,0], \n",
    "                   'proba_medium': y_test_proba[:,1], 'proba_low': y_test_proba[:,2]})\n",
    "df.to_csv('submission.csv')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
